Browse code

Move the doc paths to match other repos

In order to build in the Infra system, we'd like to be able to reuse the
existing doc build macros. To support that, move docs/source to
doc/source and docs/html to doc/build/html.

Change-Id: Ibd8e8e82e54c69b182120df67e6ec6908fed2908

Monty Taylor authored on 2014/10/08 05:25:01
Showing 60 changed files
... ...
@@ -8,8 +8,8 @@
8 8
 .tox
9 9
 .stackenv
10 10
 accrc
11
-docs/files
12
-docs/html
11
+doc/files
12
+doc/build
13 13
 files/*.gz
14 14
 files/*.qcow2
15 15
 files/images
16 16
new file mode 100644
... ...
@@ -0,0 +1,616 @@
0
+article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
1
+audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
2
+audio:not([controls]){display:none;}
3
+html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
4
+a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
5
+a:hover,a:active{outline:0;}
6
+sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
7
+sup{top:-0.5em;}
8
+sub{bottom:-0.25em;}
9
+img{max-width:100%;height:auto;border:0;-ms-interpolation-mode:bicubic;}
10
+button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
11
+button,input{*overflow:visible;line-height:normal;}
12
+button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
13
+button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}
14
+input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}
15
+input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
16
+textarea{overflow:auto;vertical-align:top;}
17
+body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333333;background-color:#ffffff;}
18
+a{color:#0088cc;text-decoration:none;}
19
+a:hover{color:#005580;text-decoration:underline;}
20
+.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";}
21
+.row:after{clear:both;}
22
+[class*="span"]{float:left;margin-left:20px;}
23
+.span1{width:60px;}
24
+.span2{width:140px;}
25
+.span3{width:220px;}
26
+.span4{width:300px;}
27
+.span5{width:380px;}
28
+.span6{width:460px;}
29
+.span7{width:540px;}
30
+.span8{width:620px;}
31
+.span9{width:700px;}
32
+.span10{width:780px;}
33
+.span11{width:860px;}
34
+.span12,.container{width:940px;}
35
+.offset1{margin-left:100px;}
36
+.offset2{margin-left:180px;}
37
+.offset3{margin-left:260px;}
38
+.offset4{margin-left:340px;}
39
+.offset5{margin-left:420px;}
40
+.offset6{margin-left:500px;}
41
+.offset7{margin-left:580px;}
42
+.offset8{margin-left:660px;}
43
+.offset9{margin-left:740px;}
44
+.offset10{margin-left:820px;}
45
+.offset11{margin-left:900px;}
46
+.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";}
47
+.row-fluid:after{clear:both;}
48
+.row-fluid>[class*="span"]{float:left;margin-left:2.127659574%;}
49
+.row-fluid>[class*="span"]:first-child{margin-left:0;}
50
+.row-fluid .span1{width:6.382978723%;}
51
+.row-fluid .span2{width:14.89361702%;}
52
+.row-fluid .span3{width:23.404255317%;}
53
+.row-fluid .span4{width:31.914893614%;}
54
+.row-fluid .span5{width:40.425531911%;}
55
+.row-fluid .span6{width:48.93617020799999%;}
56
+.row-fluid .span7{width:57.446808505%;}
57
+.row-fluid .span8{width:65.95744680199999%;}
58
+.row-fluid .span9{width:74.468085099%;}
59
+.row-fluid .span10{width:82.97872339599999%;}
60
+.row-fluid .span11{width:91.489361693%;}
61
+.row-fluid .span12{width:99.99999998999999%;}
62
+.container{width:940px;margin-left:auto;margin-right:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";}
63
+.container:after{clear:both;}
64
+.container-fluid{padding-left:20px;padding-right:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";}
65
+.container-fluid:after{clear:both;}
66
+p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;}p small{font-size:11px;color:#999999;}
67
+.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;}
68
+h1,h2,h3,h4,h5,h6{margin:0;font-weight:bold;color:#333333;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;}
69
+h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;}
70
+h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;}
71
+h3{line-height:27px;font-size:18px;}h3 small{font-size:14px;}
72
+h4,h5,h6{line-height:18px;}
73
+h4{font-size:14px;}h4 small{font-size:12px;}
74
+h5{font-size:12px;}
75
+h6{font-size:11px;color:#999999;text-transform:uppercase;}
76
+.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;}
77
+.page-header h1{line-height:1;}
78
+ul,ol{padding:0;margin:0 0 9px 25px;}
79
+ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
80
+ul{list-style:disc;}
81
+ol{list-style:decimal;}
82
+li{line-height:18px;}
83
+ul.unstyled{margin-left:0;list-style:none;}
84
+dl{margin-bottom:18px;}
85
+dt,dd{line-height:18px;}
86
+dt{font-weight:bold;}
87
+dd{margin-left:9px;}
88
+hr{margin:18px 0;border:0;border-top:1px solid #e5e5e5;border-bottom:1px solid #ffffff;}
89
+strong{font-weight:bold;}
90
+em{font-style:italic;}
91
+.muted{color:#999999;}
92
+abbr{font-size:90%;text-transform:uppercase;border-bottom:1px dotted #ddd;cursor:help;}
93
+blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;}
94
+blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
95
+blockquote.pull-right{float:right;padding-left:0;padding-right:15px;border-left:0;border-right:5px solid #eeeeee;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
96
+q:before,q:after,blockquote:before,blockquote:after{content:"";}
97
+address{display:block;margin-bottom:18px;line-height:18px;font-style:normal;}
98
+small{font-size:100%;}
99
+cite{font-style:normal;}
100
+code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
101
+code{padding:3px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;}
102
+pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12px;line-height:18px;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;white-space:pre;white-space:pre-wrap;word-break:break-all;}pre.prettyprint{margin-bottom:18px;}
103
+pre code{padding:0;background-color:transparent;}
104
+form{margin:0 0 18px;}
105
+fieldset{padding:0;margin:0;border:0;}
106
+legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333333;border:0;border-bottom:1px solid #eee;}
107
+label,input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:18px;}
108
+label{display:block;margin-bottom:5px;color:#333333;}
109
+input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555555;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
110
+.uneditable-textarea{width:auto;height:auto;}
111
+label input,label textarea,label select{display:block;}
112
+input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;border:0;cursor:pointer;border-radius:0 \0/;}
113
+input[type="file"]{padding:initial;line-height:initial;border:initial;background-color:#ffffff;background-color:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
114
+input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;}
115
+select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px;}
116
+select{width:220px;background-color:#ffffff;}
117
+select[multiple],select[size]{height:auto;}
118
+input[type="image"]{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
119
+textarea{height:auto;}
120
+input[type="hidden"]{display:none;}
121
+.radio,.checkbox{padding-left:18px;}
122
+.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;}
123
+.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}
124
+.radio.inline,.checkbox.inline{display:inline-block;margin-bottom:0;vertical-align:middle;}
125
+.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
126
+.controls>.radio.inline:first-child,.controls>.checkbox.inline:first-child{padding-top:0;}
127
+input,textarea{-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;}
128
+input:focus,textarea:focus{border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);outline:0;outline:thin dotted \9;}
129
+input[type="file"]:focus,input[type="checkbox"]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
130
+.input-mini{width:60px;}
131
+.input-small{width:90px;}
132
+.input-medium{width:150px;}
133
+.input-large{width:210px;}
134
+.input-xlarge{width:270px;}
135
+.input-xxlarge{width:530px;}
136
+input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{float:none;margin-left:0;}
137
+input.span1,textarea.span1,.uneditable-input.span1{width:50px;}
138
+input.span2,textarea.span2,.uneditable-input.span2{width:130px;}
139
+input.span3,textarea.span3,.uneditable-input.span3{width:210px;}
140
+input.span4,textarea.span4,.uneditable-input.span4{width:290px;}
141
+input.span5,textarea.span5,.uneditable-input.span5{width:370px;}
142
+input.span6,textarea.span6,.uneditable-input.span6{width:450px;}
143
+input.span7,textarea.span7,.uneditable-input.span7{width:530px;}
144
+input.span8,textarea.span8,.uneditable-input.span8{width:610px;}
145
+input.span9,textarea.span9,.uneditable-input.span9{width:690px;}
146
+input.span10,textarea.span10,.uneditable-input.span10{width:770px;}
147
+input.span11,textarea.span11,.uneditable-input.span11{width:850px;}
148
+input.span12,textarea.span12,.uneditable-input.span12{width:930px;}
149
+input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f5f5f5;border-color:#ddd;cursor:not-allowed;}
150
+.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
151
+.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e;}
152
+.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
153
+.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
154
+.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392;}
155
+.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
156
+.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
157
+.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b;}
158
+.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
159
+input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
160
+.form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#f5f5f5;border-top:1px solid #ddd;}
161
+.uneditable-input{display:block;background-color:#ffffff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
162
+:-moz-placeholder{color:#999999;}
163
+::-webkit-input-placeholder{color:#999999;}
164
+.help-block{margin-top:5px;margin-bottom:0;color:#999999;}
165
+.help-inline{display:inline-block;*display:inline;*zoom:1;margin-bottom:9px;vertical-align:middle;padding-left:5px;}
166
+.input-prepend,.input-append{margin-bottom:5px;*zoom:1;}.input-prepend:before,.input-append:before,.input-prepend:after,.input-append:after{display:table;content:"";}
167
+.input-prepend:after,.input-append:after{clear:both;}
168
+.input-prepend input,.input-append input,.input-prepend .uneditable-input,.input-append .uneditable-input{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-prepend input:focus,.input-append input:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{position:relative;z-index:2;}
169
+.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc;}
170
+.input-prepend .add-on,.input-append .add-on{float:left;display:block;width:auto;min-width:16px;height:18px;margin-right:-1px;padding:4px 5px;font-weight:normal;line-height:18px;color:#999999;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#f5f5f5;border:1px solid #ccc;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
171
+.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546;}
172
+.input-prepend .add-on{*margin-top:1px;}
173
+.input-append input,.input-append .uneditable-input{float:left;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
174
+.input-append .uneditable-input{border-right-color:#ccc;}
175
+.input-append .add-on{margin-right:0;margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
176
+.input-append input:first-child{*margin-left:-160px;}.input-append input:first-child+.add-on{*margin-left:-21px;}
177
+.search-query{padding-left:14px;padding-right:14px;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px;}
178
+.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input{display:inline-block;margin-bottom:0;}
179
+.form-search label,.form-inline label,.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{display:inline-block;}
180
+.form-search .input-append .add-on,.form-inline .input-prepend .add-on,.form-search .input-append .add-on,.form-inline .input-prepend .add-on{vertical-align:middle;}
181
+.control-group{margin-bottom:9px;}
182
+.form-horizontal legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate;}
183
+.form-horizontal .control-group{margin-bottom:18px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";}
184
+.form-horizontal .control-group:after{clear:both;}
185
+.form-horizontal .control-group>label{float:left;width:140px;padding-top:5px;text-align:right;}
186
+.form-horizontal .controls{margin-left:160px;}
187
+.form-horizontal .form-actions{padding-left:160px;}
188
+table{max-width:100%;border-collapse:collapse;border-spacing:0;}
189
+.table{width:100%;margin-bottom:18px;}.table th,.table td{padding:8px;line-height:18px;text-align:left;border-top:1px solid #ddd;}
190
+.table th{font-weight:bold;vertical-align:bottom;}
191
+.table td{vertical-align:top;}
192
+.table thead:first-child tr th,.table thead:first-child tr td{border-top:0;}
193
+.table tbody+tbody{border-top:2px solid #ddd;}
194
+.table-condensed th,.table-condensed td{padding:4px 5px;}
195
+.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapsed;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th+th,.table-bordered td+td,.table-bordered th+td,.table-bordered td+th{border-left:1px solid #ddd;}
196
+.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
197
+.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;}
198
+.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;}
199
+.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;}
200
+.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;}
201
+.table-striped tbody tr:nth-child(even) td,.table-striped tbody tr:nth-child(even) th{background-color:#f1f1f1;}
202
+table .span1{float:none;width:44px;margin-left:0;}
203
+table .span2{float:none;width:124px;margin-left:0;}
204
+table .span3{float:none;width:204px;margin-left:0;}
205
+table .span4{float:none;width:284px;margin-left:0;}
206
+table .span5{float:none;width:364px;margin-left:0;}
207
+table .span6{float:none;width:444px;margin-left:0;}
208
+table .span7{float:none;width:524px;margin-left:0;}
209
+table .span8{float:none;width:604px;margin-left:0;}
210
+table .span9{float:none;width:684px;margin-left:0;}
211
+table .span10{float:none;width:764px;margin-left:0;}
212
+table .span11{float:none;width:844px;margin-left:0;}
213
+table .span12{float:none;width:924px;margin-left:0;}
214
+[class^="icon-"]{display:inline-block;width:14px;height:14px;vertical-align:text-top;background-image:url(../img/glyphicons-halflings.png);background-position:14px 14px;background-repeat:no-repeat;*margin-right:.3em;}[class^="icon-"]:last-child{*margin-left:0;}
215
+.icon-white{background-image:url(../img/glyphicons-halflings-white.png);}
216
+.icon-glass{background-position:0 0;}
217
+.icon-music{background-position:-24px 0;}
218
+.icon-search{background-position:-48px 0;}
219
+.icon-envelope{background-position:-72px 0;}
220
+.icon-heart{background-position:-96px 0;}
221
+.icon-star{background-position:-120px 0;}
222
+.icon-star-empty{background-position:-144px 0;}
223
+.icon-user{background-position:-168px 0;}
224
+.icon-film{background-position:-192px 0;}
225
+.icon-th-large{background-position:-216px 0;}
226
+.icon-th{background-position:-240px 0;}
227
+.icon-th-list{background-position:-264px 0;}
228
+.icon-ok{background-position:-288px 0;}
229
+.icon-remove{background-position:-312px 0;}
230
+.icon-zoom-in{background-position:-336px 0;}
231
+.icon-zoom-out{background-position:-360px 0;}
232
+.icon-off{background-position:-384px 0;}
233
+.icon-signal{background-position:-408px 0;}
234
+.icon-cog{background-position:-432px 0;}
235
+.icon-trash{background-position:-456px 0;}
236
+.icon-home{background-position:0 -24px;}
237
+.icon-file{background-position:-24px -24px;}
238
+.icon-time{background-position:-48px -24px;}
239
+.icon-road{background-position:-72px -24px;}
240
+.icon-download-alt{background-position:-96px -24px;}
241
+.icon-download{background-position:-120px -24px;}
242
+.icon-upload{background-position:-144px -24px;}
243
+.icon-inbox{background-position:-168px -24px;}
244
+.icon-play-circle{background-position:-192px -24px;}
245
+.icon-repeat{background-position:-216px -24px;}
246
+.icon-refresh{background-position:-240px -24px;}
247
+.icon-list-alt{background-position:-264px -24px;}
248
+.icon-lock{background-position:-287px -24px;}
249
+.icon-flag{background-position:-312px -24px;}
250
+.icon-headphones{background-position:-336px -24px;}
251
+.icon-volume-off{background-position:-360px -24px;}
252
+.icon-volume-down{background-position:-384px -24px;}
253
+.icon-volume-up{background-position:-408px -24px;}
254
+.icon-qrcode{background-position:-432px -24px;}
255
+.icon-barcode{background-position:-456px -24px;}
256
+.icon-tag{background-position:0 -48px;}
257
+.icon-tags{background-position:-25px -48px;}
258
+.icon-book{background-position:-48px -48px;}
259
+.icon-bookmark{background-position:-72px -48px;}
260
+.icon-print{background-position:-96px -48px;}
261
+.icon-camera{background-position:-120px -48px;}
262
+.icon-font{background-position:-144px -48px;}
263
+.icon-bold{background-position:-167px -48px;}
264
+.icon-italic{background-position:-192px -48px;}
265
+.icon-text-height{background-position:-216px -48px;}
266
+.icon-text-width{background-position:-240px -48px;}
267
+.icon-align-left{background-position:-264px -48px;}
268
+.icon-align-center{background-position:-288px -48px;}
269
+.icon-align-right{background-position:-312px -48px;}
270
+.icon-align-justify{background-position:-336px -48px;}
271
+.icon-list{background-position:-360px -48px;}
272
+.icon-indent-left{background-position:-384px -48px;}
273
+.icon-indent-right{background-position:-408px -48px;}
274
+.icon-facetime-video{background-position:-432px -48px;}
275
+.icon-picture{background-position:-456px -48px;}
276
+.icon-pencil{background-position:0 -72px;}
277
+.icon-map-marker{background-position:-24px -72px;}
278
+.icon-adjust{background-position:-48px -72px;}
279
+.icon-tint{background-position:-72px -72px;}
280
+.icon-edit{background-position:-96px -72px;}
281
+.icon-share{background-position:-120px -72px;}
282
+.icon-check{background-position:-144px -72px;}
283
+.icon-move{background-position:-168px -72px;}
284
+.icon-step-backward{background-position:-192px -72px;}
285
+.icon-fast-backward{background-position:-216px -72px;}
286
+.icon-backward{background-position:-240px -72px;}
287
+.icon-play{background-position:-264px -72px;}
288
+.icon-pause{background-position:-288px -72px;}
289
+.icon-stop{background-position:-312px -72px;}
290
+.icon-forward{background-position:-336px -72px;}
291
+.icon-fast-forward{background-position:-360px -72px;}
292
+.icon-step-forward{background-position:-384px -72px;}
293
+.icon-eject{background-position:-408px -72px;}
294
+.icon-chevron-left{background-position:-432px -72px;}
295
+.icon-chevron-right{background-position:-456px -72px;}
296
+.icon-plus-sign{background-position:0 -96px;}
297
+.icon-minus-sign{background-position:-24px -96px;}
298
+.icon-remove-sign{background-position:-48px -96px;}
299
+.icon-ok-sign{background-position:-72px -96px;}
300
+.icon-question-sign{background-position:-96px -96px;}
301
+.icon-info-sign{background-position:-120px -96px;}
302
+.icon-screenshot{background-position:-144px -96px;}
303
+.icon-remove-circle{background-position:-168px -96px;}
304
+.icon-ok-circle{background-position:-192px -96px;}
305
+.icon-ban-circle{background-position:-216px -96px;}
306
+.icon-arrow-left{background-position:-240px -96px;}
307
+.icon-arrow-right{background-position:-264px -96px;}
308
+.icon-arrow-up{background-position:-289px -96px;}
309
+.icon-arrow-down{background-position:-312px -96px;}
310
+.icon-share-alt{background-position:-336px -96px;}
311
+.icon-resize-full{background-position:-360px -96px;}
312
+.icon-resize-small{background-position:-384px -96px;}
313
+.icon-plus{background-position:-408px -96px;}
314
+.icon-minus{background-position:-433px -96px;}
315
+.icon-asterisk{background-position:-456px -96px;}
316
+.icon-exclamation-sign{background-position:0 -120px;}
317
+.icon-gift{background-position:-24px -120px;}
318
+.icon-leaf{background-position:-48px -120px;}
319
+.icon-fire{background-position:-72px -120px;}
320
+.icon-eye-open{background-position:-96px -120px;}
321
+.icon-eye-close{background-position:-120px -120px;}
322
+.icon-warning-sign{background-position:-144px -120px;}
323
+.icon-plane{background-position:-168px -120px;}
324
+.icon-calendar{background-position:-192px -120px;}
325
+.icon-random{background-position:-216px -120px;}
326
+.icon-comment{background-position:-240px -120px;}
327
+.icon-magnet{background-position:-264px -120px;}
328
+.icon-chevron-up{background-position:-288px -120px;}
329
+.icon-chevron-down{background-position:-313px -119px;}
330
+.icon-retweet{background-position:-336px -120px;}
331
+.icon-shopping-cart{background-position:-360px -120px;}
332
+.icon-folder-close{background-position:-384px -120px;}
333
+.icon-folder-open{background-position:-408px -120px;}
334
+.icon-resize-vertical{background-position:-432px -119px;}
335
+.icon-resize-horizontal{background-position:-456px -118px;}
336
+.dropdown{position:relative;}
337
+.dropdown-toggle{*margin-bottom:-3px;}
338
+.dropdown-toggle:active,.open .dropdown-toggle{outline:0;}
339
+.caret{display:inline-block;width:0;height:0;text-indent:-99999px;*text-indent:0;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000000;opacity:0.3;filter:alpha(opacity=30);content:"\2193";}
340
+.dropdown .caret{margin-top:8px;margin-left:2px;}
341
+.dropdown:hover .caret,.open.dropdown .caret{opacity:1;filter:alpha(opacity=100);}
342
+.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;max-width:220px;_width:160px;padding:4px 0;margin:0;list-style:none;background-color:#ffffff;border-color:#ccc;border-color:rgba(0, 0, 0, 0.2);border-style:solid;border-width:1px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;}.dropdown-menu.bottom-up{top:auto;bottom:100%;margin-bottom:2px;}
343
+.dropdown-menu .divider{height:1px;margin:5px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;*width:100%;*margin:-5px 0 5px;}
344
+.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:normal;line-height:18px;color:#555555;white-space:nowrap;}
345
+.dropdown-menu li>a:hover,.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#ffffff;text-decoration:none;background-color:#0088cc;}
346
+.dropdown.open{*z-index:1000;}.dropdown.open .dropdown-toggle{color:#ffffff;background:#ccc;background:rgba(0, 0, 0, 0.3);}
347
+.dropdown.open .dropdown-menu{display:block;}
348
+.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
349
+.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
350
+.fade{-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;opacity:0;}.fade.in{opacity:1;}
351
+.collapse{-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-ms-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;position:relative;overflow:hidden;height:0;}.collapse.in{height:auto;}
352
+.close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;opacity:0.4;filter:alpha(opacity=40);cursor:pointer;}
353
+.btn{display:inline-block;padding:4px 10px 4px;font-size:13px;line-height:18px;color:#333333;text-align:center;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#fafafa;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);background-image:-ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);border:1px solid #ccc;border-bottom-color:#bbb;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);cursor:pointer;*margin-left:.3em;}.btn:first-child{*margin-left:0;}
354
+.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-ms-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}
355
+.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
356
+.btn.active,.btn:active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);background-color:#e6e6e6;background-color:#d9d9d9 \9;color:rgba(0, 0, 0, 0.5);outline:0;}
357
+.btn.disabled,.btn[disabled]{cursor:default;background-image:none;background-color:#e6e6e6;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
358
+.btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
359
+.btn-large .icon{margin-top:1px;}
360
+.btn-small{padding:5px 9px;font-size:11px;line-height:16px;}
361
+.btn-small .icon{margin-top:-1px;}
362
+.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover{text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);color:#ffffff;}
363
+.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active{color:rgba(255, 255, 255, 0.75);}
364
+.btn-primary{background-color:#006dcc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-ms-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(top, #0088cc, #0044cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#0044cc;}
365
+.btn-primary:active,.btn-primary.active{background-color:#003399 \9;}
366
+.btn-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-ms-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(top, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;}
367
+.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
368
+.btn-danger{background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-ms-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(top, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;}
369
+.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
370
+.btn-success{background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-ms-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(top, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;}
371
+.btn-success:active,.btn-success.active{background-color:#408140 \9;}
372
+.btn-info{background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-ms-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(top, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;}
373
+.btn-info:active,.btn-info.active{background-color:#24748c \9;}
374
+button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;}
375
+button.btn.large,input[type="submit"].btn.large{*padding-top:7px;*padding-bottom:7px;}
376
+button.btn.small,input[type="submit"].btn.small{*padding-top:3px;*padding-bottom:3px;}
377
+.btn-group{position:relative;*zoom:1;*margin-left:.3em;}.btn-group:before,.btn-group:after{display:table;content:"";}
378
+.btn-group:after{clear:both;}
379
+.btn-group:first-child{*margin-left:0;}
380
+.btn-group+.btn-group{margin-left:5px;}
381
+.btn-toolbar{margin-top:9px;margin-bottom:9px;}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1;}
382
+.btn-group .btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
383
+.btn-group .btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
384
+.btn-group .btn:last-child,.btn-group .dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
385
+.btn-group .btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
386
+.btn-group .btn.large:last-child,.btn-group .large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
387
+.btn-group .btn:hover,.btn-group .btn:focus,.btn-group .btn:active,.btn-group .btn.active{z-index:2;}
388
+.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}
389
+.btn-group .dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);*padding-top:5px;*padding-bottom:5px;}
390
+.btn-group.open{*z-index:1000;}.btn-group.open .dropdown-menu{display:block;margin-top:1px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
391
+.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);}
392
+.btn .caret{margin-top:7px;margin-left:0;}
393
+.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100);}
394
+.btn-primary .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret{border-top-color:#ffffff;opacity:0.75;filter:alpha(opacity=75);}
395
+.btn-small .caret{margin-top:4px;}
396
+.alert{padding:8px 35px 8px 14px;margin-bottom:18px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
397
+.alert,.alert-heading{color:#c09853;}
398
+.alert .close{position:relative;top:-2px;right:-21px;line-height:18px;}
399
+.alert-success{background-color:#dff0d8;border-color:#d6e9c6;}
400
+.alert-success,.alert-success .alert-heading{color:#468847;}
401
+.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;}
402
+.alert-danger,.alert-error,.alert-danger .alert-heading,.alert-error .alert-heading{color:#b94a48;}
403
+.alert-info{background-color:#d9edf7;border-color:#bce8f1;}
404
+.alert-info,.alert-info .alert-heading{color:#3a87ad;}
405
+.alert-block{padding-top:14px;padding-bottom:14px;}
406
+.alert-block>p,.alert-block>ul{margin-bottom:0;}
407
+.alert-block p+p{margin-top:5px;}
408
+.nav{margin-left:0;margin-bottom:18px;list-style:none;}
409
+.nav>li>a{display:block;}
410
+.nav>li>a:hover{text-decoration:none;background-color:#eeeeee;}
411
+.nav-list{padding-left:14px;padding-right:14px;margin-bottom:0;}
412
+.nav-list>li>a,.nav-list .nav-header{display:block;padding:3px 15px;margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}
413
+.nav-list .nav-header{font-size:11px;font-weight:bold;line-height:18px;color:#999999;text-transform:uppercase;}
414
+.nav-list>li+.nav-header{margin-top:9px;}
415
+.nav-list .active>a{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;}
416
+.nav-list .icon{margin-right:2px;}
417
+.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";}
418
+.nav-tabs:after,.nav-pills:after{clear:both;}
419
+.nav-tabs>li,.nav-pills>li{float:left;}
420
+.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;}
421
+.nav-tabs{border-bottom:1px solid #ddd;}
422
+.nav-tabs>li{margin-bottom:-1px;}
423
+.nav-tabs>li>a{padding-top:9px;padding-bottom:9px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;}
424
+.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}
425
+.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
426
+.nav-pills .active>a,.nav-pills .active>a:hover{color:#ffffff;background-color:#0088cc;}
427
+.nav-stacked>li{float:none;}
428
+.nav-stacked>li>a{margin-right:0;}
429
+.nav-tabs.nav-stacked{border-bottom:0;}
430
+.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
431
+.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}
432
+.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}
433
+.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;}
434
+.nav-pills.nav-stacked>li>a{margin-bottom:3px;}
435
+.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;}
436
+.nav-tabs .dropdown-menu,.nav-pills .dropdown-menu{margin-top:1px;border-width:1px;}
437
+.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
438
+.nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{border-top-color:#0088cc;margin-top:6px;}
439
+.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;}
440
+.nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333333;}
441
+.nav>.dropdown.active>a:hover{color:#000000;cursor:pointer;}
442
+.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;}
443
+.nav .open .caret,.nav .open.active .caret,.nav .open a:hover .caret{border-top-color:#ffffff;opacity:1;filter:alpha(opacity=100);}
444
+.tabs-stacked .open>a:hover{border-color:#999999;}
445
+.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";}
446
+.tabbable:after{clear:both;}
447
+.tabs-below .nav-tabs,.tabs-right .nav-tabs,.tabs-left .nav-tabs{border-bottom:0;}
448
+.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;}
449
+.tab-content>.active,.pill-content>.active{display:block;}
450
+.tabs-below .nav-tabs{border-top:1px solid #ddd;}
451
+.tabs-below .nav-tabs>li{margin-top:-1px;margin-bottom:0;}
452
+.tabs-below .nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below .nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd;}
453
+.tabs-below .nav-tabs .active>a,.tabs-below .nav-tabs .active>a:hover{border-color:transparent #ddd #ddd #ddd;}
454
+.tabs-left .nav-tabs>li,.tabs-right .nav-tabs>li{float:none;}
455
+.tabs-left .nav-tabs>li>a,.tabs-right .nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;}
456
+.tabs-left .nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;}
457
+.tabs-left .nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
458
+.tabs-left .nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee;}
459
+.tabs-left .nav-tabs .active>a,.tabs-left .nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;}
460
+.tabs-right .nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;}
461
+.tabs-right .nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
462
+.tabs-right .nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd;}
463
+.tabs-right .nav-tabs .active>a,.tabs-right .nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;}
464
+.navbar{overflow:visible;margin-bottom:18px;}
465
+.navbar-inner{padding-left:20px;padding-right:20px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);}
466
+.btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);}.btn-navbar:hover,.btn-navbar:active,.btn-navbar.active,.btn-navbar.disabled,.btn-navbar[disabled]{background-color:#222222;}
467
+.btn-navbar:active,.btn-navbar.active{background-color:#080808 \9;}
468
+.btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);}
469
+.btn-navbar .icon-bar+.icon-bar{margin-top:3px;}
470
+.nav-collapse.collapse{height:auto;}
471
+.navbar .brand:hover{text-decoration:none;}
472
+.navbar .brand{float:left;display:block;padding:8px 20px 12px;margin-left:-20px;font-size:20px;font-weight:200;line-height:1;color:#ffffff;}
473
+.navbar .navbar-text{margin-bottom:0;line-height:40px;color:#999999;}.navbar .navbar-text a:hover{color:#ffffff;background-color:transparent;}
474
+.navbar .btn,.navbar .btn-group{margin-top:5px;}
475
+.navbar .btn-group .btn{margin-top:0;}
476
+.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";}
477
+.navbar-form:after{clear:both;}
478
+.navbar-form input,.navbar-form select{display:inline-block;margin-top:5px;margin-bottom:0;}
479
+.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;}
480
+.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;}
481
+.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0;}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#ffffff;color:rgba(255, 255, 255, 0.75);background:#666;background:rgba(255, 255, 255, 0.3);border:1px solid #111;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.navbar-search .search-query :-moz-placeholder{color:#eeeeee;}
482
+.navbar-search .search-query::-webkit-input-placeholder{color:#eeeeee;}
483
+.navbar-search .search-query:hover{color:#ffffff;background-color:#999999;background-color:rgba(255, 255, 255, 0.5);}
484
+.navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;}
485
+.navbar-fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030;}
486
+.navbar-fixed-top .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
487
+.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;}
488
+.navbar .nav.pull-right{float:right;}
489
+.navbar .nav>li{display:block;float:left;}
490
+.navbar .nav>li>a{float:none;padding:10px 10px 11px;line-height:19px;color:#999999;text-decoration:none;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}
491
+.navbar .nav>li>a:hover{background-color:transparent;color:#ffffff;text-decoration:none;}
492
+.navbar .nav .active>a,.navbar .nav .active>a:hover{color:#ffffff;text-decoration:none;background-color:#222222;background-color:rgba(0, 0, 0, 0.5);}
493
+.navbar .divider-vertical{height:40px;width:1px;margin:0 9px;overflow:hidden;background-color:#222222;border-right:1px solid #333333;}
494
+.navbar .nav.pull-right{margin-left:10px;margin-right:0;}
495
+.navbar .dropdown-menu{margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.navbar .dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;}
496
+.navbar .dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;}
497
+.navbar .nav .dropdown-toggle .caret,.navbar .nav .open.dropdown .caret{border-top-color:#ffffff;}
498
+.navbar .nav .active .caret{opacity:1;filter:alpha(opacity=100);}
499
+.navbar .nav .open>.dropdown-toggle,.navbar .nav .active>.dropdown-toggle,.navbar .nav .open.active>.dropdown-toggle{background-color:transparent;}
500
+.navbar .nav .active>.dropdown-toggle:hover{color:#ffffff;}
501
+.navbar .nav.pull-right .dropdown-menu{left:auto;right:0;}.navbar .nav.pull-right .dropdown-menu:before{left:auto;right:12px;}
502
+.navbar .nav.pull-right .dropdown-menu:after{left:auto;right:13px;}
503
+.breadcrumb{padding:7px 14px;margin:0 0 18px;background-color:#fbfbfb;background-image:-moz-linear-gradient(top, #ffffff, #f5f5f5);background-image:-ms-linear-gradient(top, #ffffff, #f5f5f5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));background-image:-webkit-linear-gradient(top, #ffffff, #f5f5f5);background-image:-o-linear-gradient(top, #ffffff, #f5f5f5);background-image:linear-gradient(top, #ffffff, #f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;}.breadcrumb li{display:inline;text-shadow:0 1px 0 #ffffff;}
504
+.breadcrumb .divider{padding:0 5px;color:#999999;}
505
+.breadcrumb .active a{color:#333333;}
506
+.pagination{height:36px;margin:18px 0;}
507
+.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);}
508
+.pagination li{display:inline;}
509
+.pagination a{float:left;padding:0 14px;line-height:34px;text-decoration:none;border:1px solid #ddd;border-left-width:0;}
510
+.pagination a:hover,.pagination .active a{background-color:#f5f5f5;}
511
+.pagination .active a{color:#999999;cursor:default;}
512
+.pagination .disabled a,.pagination .disabled a:hover{color:#999999;background-color:transparent;cursor:default;}
513
+.pagination li:first-child a{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
514
+.pagination li:last-child a{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
515
+.pagination-centered{text-align:center;}
516
+.pagination-right{text-align:right;}
517
+.pager{margin-left:0;margin-bottom:18px;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";}
518
+.pager:after{clear:both;}
519
+.pager li{display:inline;}
520
+.pager a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
521
+.pager a:hover{text-decoration:none;background-color:#f5f5f5;}
522
+.pager .next a{float:right;}
523
+.pager .previous a{float:left;}
524
+.modal-open .dropdown-menu{z-index:2050;}
525
+.modal-open .dropdown.open{*z-index:2050;}
526
+.modal-open .popover{z-index:2060;}
527
+.modal-open .tooltip{z-index:2070;}
528
+.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;}
529
+.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);}
530
+.modal{position:fixed;top:50%;left:50%;z-index:1050;max-height:500px;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-ms-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;}
531
+.modal.fade.in{top:50%;}
532
+.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;}
533
+.modal-body{padding:15px;}
534
+.modal-footer{padding:14px 15px 15px;margin-bottom:0;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";}
535
+.modal-footer:after{clear:both;}
536
+.modal-footer .btn{float:right;margin-left:5px;margin-bottom:0;}
537
+.tooltip{position:absolute;z-index:1020;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);}
538
+.tooltip.top{margin-top:-2px;}
539
+.tooltip.right{margin-left:2px;}
540
+.tooltip.bottom{margin-top:2px;}
541
+.tooltip.left{margin-left:-2px;}
542
+.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
543
+.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}
544
+.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}
545
+.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}
546
+.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
547
+.tooltip-arrow{position:absolute;width:0;height:0;}
548
+.popover{position:absolute;top:0;left:0;z-index:1010;display:none;padding:5px;}.popover.top{margin-top:-5px;}
549
+.popover.right{margin-left:5px;}
550
+.popover.bottom{margin-top:5px;}
551
+.popover.left{margin-left:-5px;}
552
+.popover.top .arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
553
+.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}
554
+.popover.bottom .arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}
555
+.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}
556
+.popover .arrow{position:absolute;width:0;height:0;}
557
+.popover-inner{padding:3px;width:280px;overflow:hidden;background:#000000;background:rgba(0, 0, 0, 0.8);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);}
558
+.popover-title{padding:9px 15px;line-height:1;background-color:#f5f5f5;border-bottom:1px solid #eee;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;}
559
+.popover-content{padding:14px;background-color:#ffffff;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;}
560
+.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";}
561
+.thumbnails:after{clear:both;}
562
+.thumbnails>li{float:left;margin:0 0 18px 20px;}
563
+.thumbnail{display:block;padding:4px;line-height:1;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);}
564
+a.thumbnail:hover{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);}
565
+.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;}
566
+.thumbnail .caption{padding:9px;}
567
+.label{padding:1px 3px 2px;font-size:9.75px;font-weight:bold;color:#ffffff;text-transform:uppercase;background-color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
568
+.label-important{background-color:#b94a48;}
569
+.label-warning{background-color:#f89406;}
570
+.label-success{background-color:#468847;}
571
+.label-info{background-color:#3a87ad;}
572
+@-webkit-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-ms-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(top, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
573
+.progress .bar{width:0%;height:18px;color:#ffffff;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-ms-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(top, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-ms-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}
574
+.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;}
575
+.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}
576
+.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);}
577
+.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
578
+.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);}
579
+.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
580
+.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-ms-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(top, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);}
581
+.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
582
+.accordion{margin-bottom:18px;}
583
+.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
584
+.accordion-heading{border-bottom:0;}
585
+.accordion-heading .accordion-toggle{display:block;padding:8px 15px;}
586
+.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;}
587
+.carousel{position:relative;margin-bottom:18px;line-height:1;}
588
+.carousel-inner{overflow:hidden;width:100%;position:relative;}
589
+.carousel .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-ms-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}
590
+.carousel .item>img{display:block;line-height:1;}
591
+.carousel .active,.carousel .next,.carousel .prev{display:block;}
592
+.carousel .active{left:0;}
593
+.carousel .next,.carousel .prev{position:absolute;top:0;width:100%;}
594
+.carousel .next{left:100%;}
595
+.carousel .prev{left:-100%;}
596
+.carousel .next.left,.carousel .prev.right{left:0;}
597
+.carousel .active.left{left:-100%;}
598
+.carousel .active.right{left:100%;}
599
+.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;}
600
+.carousel-control:hover{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}
601
+.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:10px 15px 5px;background:#333333;background:rgba(0, 0, 0, 0.75);}
602
+.carousel-caption h4,.carousel-caption p{color:#ffffff;}
603
+.hero-unit{padding:60px;margin-bottom:30px;background-color:#f5f5f5;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;}
604
+.hero-unit p{font-size:18px;font-weight:200;line-height:27px;}
605
+.pull-right{float:right;}
606
+.pull-left{float:left;}
607
+.hide{display:none;}
608
+.show{display:block;}
609
+.invisible{visibility:hidden;}
610
+
611
+
612
+/* Responsive css */
613
+
614
+/*.hidden{display:none;visibility:hidden;}*/
615
+/*@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:18px;} input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;} .input-prepend input[class*="span"],.input-append input[class*="span"]{width:auto;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{position:absolute;top:10px;left:10px;right:10px;width:auto;margin:0;}.modal.fade.in{top:auto;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:768px){.container{width:auto;padding:0 20px;} .row-fluid{width:100%;} .row{margin-left:0;} .row>[class*="span"],.row-fluid>[class*="span"]{float:none;display:block;width:auto;margin:0;}}@media (min-width:768px) and (max-width:980px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:20px;} .span1{width:42px;} .span2{width:104px;} .span3{width:166px;} .span4{width:228px;} .span5{width:290px;} .span6{width:352px;} .span7{width:414px;} .span8{width:476px;} .span9{width:538px;} .span10{width:600px;} .span11{width:662px;} .span12,.container{width:724px;} .offset1{margin-left:82px;} .offset2{margin-left:144px;} .offset3{margin-left:206px;} .offset4{margin-left:268px;} .offset5{margin-left:330px;} .offset6{margin-left:392px;} .offset7{margin-left:454px;} .offset8{margin-left:516px;} .offset9{margin-left:578px;} .offset10{margin-left:640px;} .offset11{margin-left:702px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.762430939%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid .span1{width:5.801104972%;} .row-fluid .span2{width:14.364640883%;} .row-fluid .span3{width:22.928176794%;} .row-fluid .span4{width:31.491712705%;} .row-fluid .span5{width:40.055248616%;} .row-fluid .span6{width:48.618784527%;} .row-fluid .span7{width:57.182320438000005%;} .row-fluid .span8{width:65.74585634900001%;} .row-fluid .span9{width:74.30939226%;} .row-fluid .span10{width:82.87292817100001%;} .row-fluid .span11{width:91.436464082%;} .row-fluid .span12{width:99.999999993%;} input.span1,textarea.span1,.uneditable-input.span1{width:32px;} input.span2,textarea.span2,.uneditable-input.span2{width:94px;} input.span3,textarea.span3,.uneditable-input.span3{width:156px;} input.span4,textarea.span4,.uneditable-input.span4{width:218px;} input.span5,textarea.span5,.uneditable-input.span5{width:280px;} input.span6,textarea.span6,.uneditable-input.span6{width:342px;} input.span7,textarea.span7,.uneditable-input.span7{width:404px;} input.span8,textarea.span8,.uneditable-input.span8{width:466px;} input.span9,textarea.span9,.uneditable-input.span9{width:528px;} input.span10,textarea.span10,.uneditable-input.span10{width:590px;} input.span11,textarea.span11,.uneditable-input.span11{width:652px;} input.span12,textarea.span12,.uneditable-input.span12{width:714px;}}@media (max-width:980px){body{padding-top:0;} .navbar-fixed-top{position:static;margin-bottom:18px;} .navbar-fixed-top .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .navbar .nav-collapse{clear:left;} .navbar .nav{float:none;margin:0 0 9px;} .navbar .nav>li{float:none;} .navbar .nav>li>a{margin-bottom:2px;} .navbar .nav>.divider-vertical{display:none;} .navbar .nav>li>a,.navbar .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .navbar .dropdown-menu li+li a{margin-bottom:2px;} .navbar .nav>li>a:hover,.navbar .dropdown-menu a:hover{background-color:#222222;} .navbar .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .navbar .dropdown-menu:before,.navbar .dropdown-menu:after{display:none;} .navbar .dropdown-menu .divider{display:none;} .navbar-form,.navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222222;border-bottom:1px solid #222222;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);} .navbar .nav.pull-right{float:none;margin-left:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .btn-navbar{display:block;} .nav-collapse{overflow:hidden;height:0;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:30px;} .span1{width:70px;} .span2{width:170px;} .span3{width:270px;} .span4{width:370px;} .span5{width:470px;} .span6{width:570px;} .span7{width:670px;} .span8{width:770px;} .span9{width:870px;} .span10{width:970px;} .span11{width:1070px;} .span12,.container{width:1170px;} .offset1{margin-left:130px;} .offset2{margin-left:230px;} .offset3{margin-left:330px;} .offset4{margin-left:430px;} .offset5{margin-left:530px;} .offset6{margin-left:630px;} .offset7{margin-left:730px;} .offset8{margin-left:830px;} .offset9{margin-left:930px;} .offset10{margin-left:1030px;} .offset11{margin-left:1130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.564102564%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid .span1{width:5.982905983%;} .row-fluid .span2{width:14.529914530000001%;} .row-fluid .span3{width:23.076923077%;} .row-fluid .span4{width:31.623931624%;} .row-fluid .span5{width:40.170940171000005%;} .row-fluid .span6{width:48.717948718%;} .row-fluid .span7{width:57.264957265%;} .row-fluid .span8{width:65.81196581200001%;} .row-fluid .span9{width:74.358974359%;} .row-fluid .span10{width:82.905982906%;} .row-fluid .span11{width:91.45299145300001%;} .row-fluid .span12{width:100%;} input.span1,textarea.span1,.uneditable-input.span1{width:60px;} input.span2,textarea.span2,.uneditable-input.span2{width:160px;} input.span3,textarea.span3,.uneditable-input.span3{width:260px;} input.span4,textarea.span4,.uneditable-input.span4{width:360px;} input.span5,textarea.span5,.uneditable-input.span5{width:460px;} input.span6,textarea.span6,.uneditable-input.span6{width:560px;} input.span7,textarea.span7,.uneditable-input.span7{width:660px;} input.span8,textarea.span8,.uneditable-input.span8{width:760px;} input.span9,textarea.span9,.uneditable-input.span9{width:860px;} input.span10,textarea.span10,.uneditable-input.span10{width:960px;} input.span11,textarea.span11,.uneditable-input.span11{width:1060px;} input.span12,textarea.span12,.uneditable-input.span12{width:1160px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;}}*/
0 616
new file mode 100644
... ...
@@ -0,0 +1,122 @@
0
+
1
+a.brand {
2
+	background: url(../images/small_logo.png) no-repeat left 6px;
3
+	width: 166px;
4
+	text-indent: -9999px;
5
+}
6
+
7
+code {
8
+  background-color: #ffffff;
9
+}
10
+
11
+#home .hero-unit {
12
+  background: url(../images/header_bg.png) top left repeat-x;
13
+	color: #fff;
14
+	padding-left: 25px;
15
+	padding-right: 25px;
16
+	height: 161px;
17
+}
18
+
19
+#home .hero-unit {
20
+	margin-right: ;
21
+}
22
+
23
+h1#main_header {
24
+	background: url(../images/logo.png) top left no-repeat;
25
+	text-indent: -9999px;
26
+}
27
+
28
+.sub_header {
29
+	font-size: 12px;
30
+	font-family: "anivers";
31
+	font-weight: normal;
32
+	width: 420px;
33
+}
34
+
35
+#home .hero-unit a {
36
+	color: #fff;
37
+	text-decoration: underline;
38
+}
39
+
40
+.clear {
41
+	clear: both;
42
+}
43
+
44
+ol#getting_started {
45
+	list-style: none;
46
+	width: 396px;
47
+	margin-top: -45px;
48
+	margin-right: 0;
49
+	margin-left: 72px;
50
+}
51
+
52
+ol#getting_started li {
53
+	background: url(../images/quickstart.png) top left no-repeat;
54
+}
55
+
56
+ol#getting_started li pre {
57
+	font-size: 11px;
58
+	padding: 5px;
59
+	background: #4d7ead;
60
+	border-color: #2c5d8d;
61
+	color: #fff;
62
+	overflow: auto;
63
+}
64
+
65
+li#ubuntu {
66
+	height: 46px;
67
+	padding: ;
68
+	padding-left: 82px;
69
+	padding-top: 27px;
70
+	margin-bottom: 14px;
71
+}
72
+
73
+li#github {
74
+	background-position: left -70px !important;
75
+	height: 61px;
76
+	padding: ;
77
+	padding-left: 82px;
78
+	padding-top: 4px;
79
+	margin-bottom: 25px;
80
+}
81
+
82
+
83
+li#install {
84
+	background-position: left bottom !important;
85
+	height: 61px;
86
+	padding: ;
87
+	padding-left: 82px;
88
+	padding-top: 4px;
89
+	margin-bottom: 25px;
90
+}
91
+
92
+h2 small {
93
+	font-size: 12px;
94
+	font-style: italic;
95
+}
96
+
97
+.container section {
98
+	margin-bottom: 25px;
99
+}
100
+
101
+
102
+thead, tfoot{
103
+	background: #ededed;
104
+	color: #444444;
105
+}
106
+
107
+table {
108
+	color: #444;
109
+}
110
+a.table-action {
111
+	display: block;
112
+	width: 45px;
113
+}
114
+
115
+footer {
116
+	clear: both;
117
+}
118
+
119
+.wat {
120
+	margin-top: 33px;
121
+}
0 122
\ No newline at end of file
1 123
new file mode 100644
2 124
Binary files /dev/null and b/doc/source/assets/images/devstack.png differ
3 125
new file mode 100644
4 126
Binary files /dev/null and b/doc/source/assets/images/header_bg.png differ
5 127
new file mode 100644
6 128
Binary files /dev/null and b/doc/source/assets/images/logo.png differ
7 129
new file mode 100644
8 130
Binary files /dev/null and b/doc/source/assets/images/quickstart.png differ
9 131
new file mode 100644
10 132
Binary files /dev/null and b/doc/source/assets/images/small_logo.png differ
11 133
new file mode 100644
... ...
@@ -0,0 +1,1722 @@
0
+/* ===================================================
1
+ * bootstrap-transition.js v2.0.0
2
+ * http://twitter.github.com/bootstrap/javascript.html#transitions
3
+ * ===================================================
4
+ * Copyright 2012 Twitter, Inc.
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ * ========================================================== */
18
+
19
+!function( $ ) {
20
+
21
+  $(function () {
22
+
23
+    "use strict"
24
+
25
+    /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
26
+     * ======================================================= */
27
+
28
+    $.support.transition = (function () {
29
+      var thisBody = document.body || document.documentElement
30
+        , thisStyle = thisBody.style
31
+        , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
32
+
33
+      return support && {
34
+        end: (function () {
35
+          var transitionEnd = "TransitionEnd"
36
+          if ( $.browser.webkit ) {
37
+          	transitionEnd = "webkitTransitionEnd"
38
+          } else if ( $.browser.mozilla ) {
39
+          	transitionEnd = "transitionend"
40
+          } else if ( $.browser.opera ) {
41
+          	transitionEnd = "oTransitionEnd"
42
+          }
43
+          return transitionEnd
44
+        }())
45
+      }
46
+    })()
47
+
48
+  })
49
+  
50
+}( window.jQuery )
51
+/* ==========================================================
52
+ * bootstrap-alert.js v2.0.0
53
+ * http://twitter.github.com/bootstrap/javascript.html#alerts
54
+ * ==========================================================
55
+ * Copyright 2012 Twitter, Inc.
56
+ *
57
+ * Licensed under the Apache License, Version 2.0 (the "License");
58
+ * you may not use this file except in compliance with the License.
59
+ * You may obtain a copy of the License at
60
+ *
61
+ * http://www.apache.org/licenses/LICENSE-2.0
62
+ *
63
+ * Unless required by applicable law or agreed to in writing, software
64
+ * distributed under the License is distributed on an "AS IS" BASIS,
65
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
66
+ * See the License for the specific language governing permissions and
67
+ * limitations under the License.
68
+ * ========================================================== */
69
+
70
+
71
+!function( $ ){
72
+
73
+  "use strict"
74
+
75
+ /* ALERT CLASS DEFINITION
76
+  * ====================== */
77
+
78
+  var dismiss = '[data-dismiss="alert"]'
79
+    , Alert = function ( el ) {
80
+        $(el).on('click', dismiss, this.close)
81
+      }
82
+
83
+  Alert.prototype = {
84
+
85
+    constructor: Alert
86
+
87
+  , close: function ( e ) {
88
+      var $this = $(this)
89
+        , selector = $this.attr('data-target')
90
+        , $parent
91
+
92
+      if (!selector) {
93
+        selector = $this.attr('href')
94
+        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
95
+      }
96
+
97
+      $parent = $(selector)
98
+      $parent.trigger('close')
99
+
100
+      e && e.preventDefault()
101
+
102
+      $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
103
+
104
+      $parent.removeClass('in')
105
+
106
+      function removeElement() {
107
+        $parent.remove()
108
+        $parent.trigger('closed')
109
+      }
110
+
111
+      $.support.transition && $parent.hasClass('fade') ?
112
+        $parent.on($.support.transition.end, removeElement) :
113
+        removeElement()
114
+    }
115
+
116
+  }
117
+
118
+
119
+ /* ALERT PLUGIN DEFINITION
120
+  * ======================= */
121
+
122
+  $.fn.alert = function ( option ) {
123
+    return this.each(function () {
124
+      var $this = $(this)
125
+        , data = $this.data('alert')
126
+      if (!data) $this.data('alert', (data = new Alert(this)))
127
+      if (typeof option == 'string') data[option].call($this)
128
+    })
129
+  }
130
+
131
+  $.fn.alert.Constructor = Alert
132
+
133
+
134
+ /* ALERT DATA-API
135
+  * ============== */
136
+
137
+  $(function () {
138
+    $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
139
+  })
140
+
141
+}( window.jQuery )
142
+/* ============================================================
143
+ * bootstrap-button.js v2.0.0
144
+ * http://twitter.github.com/bootstrap/javascript.html#buttons
145
+ * ============================================================
146
+ * Copyright 2012 Twitter, Inc.
147
+ *
148
+ * Licensed under the Apache License, Version 2.0 (the "License");
149
+ * you may not use this file except in compliance with the License.
150
+ * You may obtain a copy of the License at
151
+ *
152
+ * http://www.apache.org/licenses/LICENSE-2.0
153
+ *
154
+ * Unless required by applicable law or agreed to in writing, software
155
+ * distributed under the License is distributed on an "AS IS" BASIS,
156
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
157
+ * See the License for the specific language governing permissions and
158
+ * limitations under the License.
159
+ * ============================================================ */
160
+
161
+!function( $ ){
162
+
163
+  "use strict"
164
+
165
+ /* BUTTON PUBLIC CLASS DEFINITION
166
+  * ============================== */
167
+
168
+  var Button = function ( element, options ) {
169
+    this.$element = $(element)
170
+    this.options = $.extend({}, $.fn.button.defaults, options)
171
+  }
172
+
173
+  Button.prototype = {
174
+
175
+      constructor: Button
176
+
177
+    , setState: function ( state ) {
178
+        var d = 'disabled'
179
+          , $el = this.$element
180
+          , data = $el.data()
181
+          , val = $el.is('input') ? 'val' : 'html'
182
+
183
+        state = state + 'Text'
184
+        data.resetText || $el.data('resetText', $el[val]())
185
+
186
+        $el[val](data[state] || this.options[state])
187
+
188
+        // push to event loop to allow forms to submit
189
+        setTimeout(function () {
190
+          state == 'loadingText' ?
191
+            $el.addClass(d).attr(d, d) :
192
+            $el.removeClass(d).removeAttr(d)
193
+        }, 0)
194
+      }
195
+
196
+    , toggle: function () {
197
+        var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
198
+
199
+        $parent && $parent
200
+          .find('.active')
201
+          .removeClass('active')
202
+
203
+        this.$element.toggleClass('active')
204
+      }
205
+
206
+  }
207
+
208
+
209
+ /* BUTTON PLUGIN DEFINITION
210
+  * ======================== */
211
+
212
+  $.fn.button = function ( option ) {
213
+    return this.each(function () {
214
+      var $this = $(this)
215
+        , data = $this.data('button')
216
+        , options = typeof option == 'object' && option
217
+      if (!data) $this.data('button', (data = new Button(this, options)))
218
+      if (option == 'toggle') data.toggle()
219
+      else if (option) data.setState(option)
220
+    })
221
+  }
222
+
223
+  $.fn.button.defaults = {
224
+    loadingText: 'loading...'
225
+  }
226
+
227
+  $.fn.button.Constructor = Button
228
+
229
+
230
+ /* BUTTON DATA-API
231
+  * =============== */
232
+
233
+  $(function () {
234
+    $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
235
+      $(e.target).button('toggle')
236
+    })
237
+  })
238
+
239
+}( window.jQuery )
240
+/* ==========================================================
241
+ * bootstrap-carousel.js v2.0.0
242
+ * http://twitter.github.com/bootstrap/javascript.html#carousel
243
+ * ==========================================================
244
+ * Copyright 2012 Twitter, Inc.
245
+ *
246
+ * Licensed under the Apache License, Version 2.0 (the "License");
247
+ * you may not use this file except in compliance with the License.
248
+ * You may obtain a copy of the License at
249
+ *
250
+ * http://www.apache.org/licenses/LICENSE-2.0
251
+ *
252
+ * Unless required by applicable law or agreed to in writing, software
253
+ * distributed under the License is distributed on an "AS IS" BASIS,
254
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
255
+ * See the License for the specific language governing permissions and
256
+ * limitations under the License.
257
+ * ========================================================== */
258
+
259
+
260
+!function( $ ){
261
+
262
+  "use strict"
263
+
264
+ /* CAROUSEL CLASS DEFINITION
265
+  * ========================= */
266
+
267
+  var Carousel = function (element, options) {
268
+    this.$element = $(element)
269
+    this.options = $.extend({}, $.fn.carousel.defaults, options)
270
+    this.options.slide && this.slide(this.options.slide)
271
+  }
272
+
273
+  Carousel.prototype = {
274
+
275
+    cycle: function () {
276
+      this.interval = setInterval($.proxy(this.next, this), this.options.interval)
277
+      return this
278
+    }
279
+
280
+  , to: function (pos) {
281
+      var $active = this.$element.find('.active')
282
+        , children = $active.parent().children()
283
+        , activePos = children.index($active)
284
+        , that = this
285
+
286
+      if (pos > (children.length - 1) || pos < 0) return
287
+
288
+      if (this.sliding) {
289
+        return this.$element.one('slid', function () {
290
+          that.to(pos)
291
+        })
292
+      }
293
+
294
+      if (activePos == pos) {
295
+        return this.pause().cycle()
296
+      }
297
+
298
+      return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
299
+    }
300
+
301
+  , pause: function () {
302
+      clearInterval(this.interval)
303
+      return this
304
+    }
305
+
306
+  , next: function () {
307
+      if (this.sliding) return
308
+      return this.slide('next')
309
+    }
310
+
311
+  , prev: function () {
312
+      if (this.sliding) return
313
+      return this.slide('prev')
314
+    }
315
+
316
+  , slide: function (type, next) {
317
+      var $active = this.$element.find('.active')
318
+        , $next = next || $active[type]()
319
+        , isCycling = this.interval
320
+        , direction = type == 'next' ? 'left' : 'right'
321
+        , fallback  = type == 'next' ? 'first' : 'last'
322
+        , that = this
323
+
324
+      this.sliding = true
325
+
326
+      isCycling && this.pause()
327
+
328
+      $next = $next.length ? $next : this.$element.find('.item')[fallback]()
329
+
330
+      if (!$.support.transition && this.$element.hasClass('slide')) {
331
+        this.$element.trigger('slide')
332
+        $active.removeClass('active')
333
+        $next.addClass('active')
334
+        this.sliding = false
335
+        this.$element.trigger('slid')
336
+      } else {
337
+        $next.addClass(type)
338
+        $next[0].offsetWidth // force reflow
339
+        $active.addClass(direction)
340
+        $next.addClass(direction)
341
+        this.$element.trigger('slide')
342
+        this.$element.one($.support.transition.end, function () {
343
+          $next.removeClass([type, direction].join(' ')).addClass('active')
344
+          $active.removeClass(['active', direction].join(' '))
345
+          that.sliding = false
346
+          setTimeout(function () { that.$element.trigger('slid') }, 0)
347
+        })
348
+      }
349
+
350
+      isCycling && this.cycle()
351
+
352
+      return this
353
+    }
354
+
355
+  }
356
+
357
+
358
+ /* CAROUSEL PLUGIN DEFINITION
359
+  * ========================== */
360
+
361
+  $.fn.carousel = function ( option ) {
362
+    return this.each(function () {
363
+      var $this = $(this)
364
+        , data = $this.data('carousel')
365
+        , options = typeof option == 'object' && option
366
+      if (!data) $this.data('carousel', (data = new Carousel(this, options)))
367
+      if (typeof option == 'number') data.to(option)
368
+      else if (typeof option == 'string' || (option = options.slide)) data[option]()
369
+      else data.cycle()
370
+    })
371
+  }
372
+
373
+  $.fn.carousel.defaults = {
374
+    interval: 5000
375
+  }
376
+
377
+  $.fn.carousel.Constructor = Carousel
378
+
379
+
380
+ /* CAROUSEL DATA-API
381
+  * ================= */
382
+
383
+  $(function () {
384
+    $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
385
+      var $this = $(this), href
386
+        , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
387
+        , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
388
+      $target.carousel(options)
389
+      e.preventDefault()
390
+    })
391
+  })
392
+
393
+}( window.jQuery )
394
+/* =============================================================
395
+ * bootstrap-collapse.js v2.0.0
396
+ * http://twitter.github.com/bootstrap/javascript.html#collapse
397
+ * =============================================================
398
+ * Copyright 2012 Twitter, Inc.
399
+ *
400
+ * Licensed under the Apache License, Version 2.0 (the "License");
401
+ * you may not use this file except in compliance with the License.
402
+ * You may obtain a copy of the License at
403
+ *
404
+ * http://www.apache.org/licenses/LICENSE-2.0
405
+ *
406
+ * Unless required by applicable law or agreed to in writing, software
407
+ * distributed under the License is distributed on an "AS IS" BASIS,
408
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
409
+ * See the License for the specific language governing permissions and
410
+ * limitations under the License.
411
+ * ============================================================ */
412
+
413
+!function( $ ){
414
+
415
+  "use strict"
416
+
417
+  var Collapse = function ( element, options ) {
418
+  	this.$element = $(element)
419
+    this.options = $.extend({}, $.fn.collapse.defaults, options)
420
+
421
+    if (this.options["parent"]) {
422
+      this.$parent = $(this.options["parent"])
423
+    }
424
+
425
+    this.options.toggle && this.toggle()
426
+  }
427
+
428
+  Collapse.prototype = {
429
+
430
+    constructor: Collapse
431
+
432
+  , dimension: function () {
433
+      var hasWidth = this.$element.hasClass('width')
434
+      return hasWidth ? 'width' : 'height'
435
+    }
436
+
437
+  , show: function () {
438
+      var dimension = this.dimension()
439
+        , scroll = $.camelCase(['scroll', dimension].join('-'))
440
+        , actives = this.$parent && this.$parent.find('.in')
441
+        , hasData
442
+
443
+      if (actives && actives.length) {
444
+        hasData = actives.data('collapse')
445
+        actives.collapse('hide')
446
+        hasData || actives.data('collapse', null)
447
+      }
448
+
449
+      this.$element[dimension](0)
450
+      this.transition('addClass', 'show', 'shown')
451
+      this.$element[dimension](this.$element[0][scroll])
452
+
453
+    }
454
+
455
+  , hide: function () {
456
+      var dimension = this.dimension()
457
+      this.reset(this.$element[dimension]())
458
+      this.transition('removeClass', 'hide', 'hidden')
459
+      this.$element[dimension](0)
460
+    }
461
+
462
+  , reset: function ( size ) {
463
+      var dimension = this.dimension()
464
+
465
+      this.$element
466
+        .removeClass('collapse')
467
+        [dimension](size || 'auto')
468
+        [0].offsetWidth
469
+
470
+      this.$element.addClass('collapse')
471
+    }
472
+
473
+  , transition: function ( method, startEvent, completeEvent ) {
474
+      var that = this
475
+        , complete = function () {
476
+            if (startEvent == 'show') that.reset()
477
+            that.$element.trigger(completeEvent)
478
+          }
479
+
480
+      this.$element
481
+        .trigger(startEvent)
482
+        [method]('in')
483
+
484
+      $.support.transition && this.$element.hasClass('collapse') ?
485
+        this.$element.one($.support.transition.end, complete) :
486
+        complete()
487
+  	}
488
+
489
+  , toggle: function () {
490
+      this[this.$element.hasClass('in') ? 'hide' : 'show']()
491
+  	}
492
+
493
+  }
494
+
495
+  /* COLLAPSIBLE PLUGIN DEFINITION
496
+  * ============================== */
497
+
498
+  $.fn.collapse = function ( option ) {
499
+    return this.each(function () {
500
+      var $this = $(this)
501
+        , data = $this.data('collapse')
502
+        , options = typeof option == 'object' && option
503
+      if (!data) $this.data('collapse', (data = new Collapse(this, options)))
504
+      if (typeof option == 'string') data[option]()
505
+    })
506
+  }
507
+
508
+  $.fn.collapse.defaults = {
509
+    toggle: true
510
+  }
511
+
512
+  $.fn.collapse.Constructor = Collapse
513
+
514
+
515
+ /* COLLAPSIBLE DATA-API
516
+  * ==================== */
517
+
518
+  $(function () {
519
+    $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
520
+      var $this = $(this), href
521
+        , target = $this.attr('data-target')
522
+          || e.preventDefault()
523
+          || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
524
+        , option = $(target).data('collapse') ? 'toggle' : $this.data()
525
+      $(target).collapse(option)
526
+    })
527
+  })
528
+
529
+}( window.jQuery )
530
+/* ============================================================
531
+ * bootstrap-dropdown.js v2.0.0
532
+ * http://twitter.github.com/bootstrap/javascript.html#dropdowns
533
+ * ============================================================
534
+ * Copyright 2012 Twitter, Inc.
535
+ *
536
+ * Licensed under the Apache License, Version 2.0 (the "License");
537
+ * you may not use this file except in compliance with the License.
538
+ * You may obtain a copy of the License at
539
+ *
540
+ * http://www.apache.org/licenses/LICENSE-2.0
541
+ *
542
+ * Unless required by applicable law or agreed to in writing, software
543
+ * distributed under the License is distributed on an "AS IS" BASIS,
544
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
545
+ * See the License for the specific language governing permissions and
546
+ * limitations under the License.
547
+ * ============================================================ */
548
+
549
+
550
+!function( $ ){
551
+
552
+  "use strict"
553
+
554
+ /* DROPDOWN CLASS DEFINITION
555
+  * ========================= */
556
+
557
+  var toggle = '[data-toggle="dropdown"]'
558
+    , Dropdown = function ( element ) {
559
+        var $el = $(element).on('click.dropdown.data-api', this.toggle)
560
+        $('html').on('click.dropdown.data-api', function () {
561
+          $el.parent().removeClass('open')
562
+        })
563
+      }
564
+
565
+  Dropdown.prototype = {
566
+
567
+    constructor: Dropdown
568
+
569
+  , toggle: function ( e ) {
570
+      var $this = $(this)
571
+        , selector = $this.attr('data-target')
572
+        , $parent
573
+        , isActive
574
+
575
+      if (!selector) {
576
+        selector = $this.attr('href')
577
+        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
578
+      }
579
+
580
+      $parent = $(selector)
581
+      $parent.length || ($parent = $this.parent())
582
+
583
+      isActive = $parent.hasClass('open')
584
+
585
+      clearMenus()
586
+      !isActive && $parent.toggleClass('open')
587
+
588
+      return false
589
+    }
590
+
591
+  }
592
+
593
+  function clearMenus() {
594
+    $(toggle).parent().removeClass('open')
595
+  }
596
+
597
+
598
+  /* DROPDOWN PLUGIN DEFINITION
599
+   * ========================== */
600
+
601
+  $.fn.dropdown = function ( option ) {
602
+    return this.each(function () {
603
+      var $this = $(this)
604
+        , data = $this.data('dropdown')
605
+      if (!data) $this.data('dropdown', (data = new Dropdown(this)))
606
+      if (typeof option == 'string') data[option].call($this)
607
+    })
608
+  }
609
+
610
+  $.fn.dropdown.Constructor = Dropdown
611
+
612
+
613
+  /* APPLY TO STANDARD DROPDOWN ELEMENTS
614
+   * =================================== */
615
+
616
+  $(function () {
617
+    $('html').on('click.dropdown.data-api', clearMenus)
618
+    $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
619
+  })
620
+
621
+}( window.jQuery )
622
+/* =========================================================
623
+ * bootstrap-modal.js v2.0.0
624
+ * http://twitter.github.com/bootstrap/javascript.html#modals
625
+ * =========================================================
626
+ * Copyright 2012 Twitter, Inc.
627
+ *
628
+ * Licensed under the Apache License, Version 2.0 (the "License");
629
+ * you may not use this file except in compliance with the License.
630
+ * You may obtain a copy of the License at
631
+ *
632
+ * http://www.apache.org/licenses/LICENSE-2.0
633
+ *
634
+ * Unless required by applicable law or agreed to in writing, software
635
+ * distributed under the License is distributed on an "AS IS" BASIS,
636
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
637
+ * See the License for the specific language governing permissions and
638
+ * limitations under the License.
639
+ * ========================================================= */
640
+
641
+
642
+!function( $ ){
643
+
644
+  "use strict"
645
+
646
+ /* MODAL CLASS DEFINITION
647
+  * ====================== */
648
+
649
+  var Modal = function ( content, options ) {
650
+    this.options = $.extend({}, $.fn.modal.defaults, options)
651
+    this.$element = $(content)
652
+      .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
653
+  }
654
+
655
+  Modal.prototype = {
656
+
657
+      constructor: Modal
658
+
659
+    , toggle: function () {
660
+        return this[!this.isShown ? 'show' : 'hide']()
661
+      }
662
+
663
+    , show: function () {
664
+        var that = this
665
+
666
+        if (this.isShown) return
667
+
668
+        $('body').addClass('modal-open')
669
+
670
+        this.isShown = true
671
+        this.$element.trigger('show')
672
+
673
+        escape.call(this)
674
+        backdrop.call(this, function () {
675
+          var transition = $.support.transition && that.$element.hasClass('fade')
676
+
677
+          !that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position
678
+
679
+          that.$element
680
+            .show()
681
+
682
+          if (transition) {
683
+            that.$element[0].offsetWidth // force reflow
684
+          }
685
+
686
+          that.$element.addClass('in')
687
+
688
+          transition ?
689
+            that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
690
+            that.$element.trigger('shown')
691
+
692
+        })
693
+      }
694
+
695
+    , hide: function ( e ) {
696
+        e && e.preventDefault()
697
+
698
+        if (!this.isShown) return
699
+
700
+        var that = this
701
+        this.isShown = false
702
+
703
+        $('body').removeClass('modal-open')
704
+
705
+        escape.call(this)
706
+
707
+        this.$element
708
+          .trigger('hide')
709
+          .removeClass('in')
710
+
711
+        $.support.transition && this.$element.hasClass('fade') ?
712
+          hideWithTransition.call(this) :
713
+          hideModal.call(this)
714
+      }
715
+
716
+  }
717
+
718
+
719
+ /* MODAL PRIVATE METHODS
720
+  * ===================== */
721
+
722
+  function hideWithTransition() {
723
+    var that = this
724
+      , timeout = setTimeout(function () {
725
+          that.$element.off($.support.transition.end)
726
+          hideModal.call(that)
727
+        }, 500)
728
+
729
+    this.$element.one($.support.transition.end, function () {
730
+      clearTimeout(timeout)
731
+      hideModal.call(that)
732
+    })
733
+  }
734
+
735
+  function hideModal( that ) {
736
+    this.$element
737
+      .hide()
738
+      .trigger('hidden')
739
+
740
+    backdrop.call(this)
741
+  }
742
+
743
+  function backdrop( callback ) {
744
+    var that = this
745
+      , animate = this.$element.hasClass('fade') ? 'fade' : ''
746
+
747
+    if (this.isShown && this.options.backdrop) {
748
+      var doAnimate = $.support.transition && animate
749
+
750
+      this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
751
+        .appendTo(document.body)
752
+
753
+      if (this.options.backdrop != 'static') {
754
+        this.$backdrop.click($.proxy(this.hide, this))
755
+      }
756
+
757
+      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
758
+
759
+      this.$backdrop.addClass('in')
760
+
761
+      doAnimate ?
762
+        this.$backdrop.one($.support.transition.end, callback) :
763
+        callback()
764
+
765
+    } else if (!this.isShown && this.$backdrop) {
766
+      this.$backdrop.removeClass('in')
767
+
768
+      $.support.transition && this.$element.hasClass('fade')?
769
+        this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
770
+        removeBackdrop.call(this)
771
+
772
+    } else if (callback) {
773
+      callback()
774
+    }
775
+  }
776
+
777
+  function removeBackdrop() {
778
+    this.$backdrop.remove()
779
+    this.$backdrop = null
780
+  }
781
+
782
+  function escape() {
783
+    var that = this
784
+    if (this.isShown && this.options.keyboard) {
785
+      $(document).on('keyup.dismiss.modal', function ( e ) {
786
+        e.which == 27 && that.hide()
787
+      })
788
+    } else if (!this.isShown) {
789
+      $(document).off('keyup.dismiss.modal')
790
+    }
791
+  }
792
+
793
+
794
+ /* MODAL PLUGIN DEFINITION
795
+  * ======================= */
796
+
797
+  $.fn.modal = function ( option ) {
798
+    return this.each(function () {
799
+      var $this = $(this)
800
+        , data = $this.data('modal')
801
+        , options = typeof option == 'object' && option
802
+      if (!data) $this.data('modal', (data = new Modal(this, options)))
803
+      if (typeof option == 'string') data[option]()
804
+      else data.show()
805
+    })
806
+  }
807
+
808
+  $.fn.modal.defaults = {
809
+      backdrop: true
810
+    , keyboard: true
811
+  }
812
+
813
+  $.fn.modal.Constructor = Modal
814
+
815
+
816
+ /* MODAL DATA-API
817
+  * ============== */
818
+
819
+  $(function () {
820
+    $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
821
+      var $this = $(this), href
822
+        , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
823
+        , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
824
+
825
+      e.preventDefault()
826
+      $target.modal(option)
827
+    })
828
+  })
829
+
830
+}( window.jQuery )
831
+/* ===========================================================
832
+ * bootstrap-tooltip.js v2.0.0
833
+ * http://twitter.github.com/bootstrap/javascript.html#tooltips
834
+ * Inspired by the original jQuery.tipsy by Jason Frame
835
+ * ===========================================================
836
+ * Copyright 2012 Twitter, Inc.
837
+ *
838
+ * Licensed under the Apache License, Version 2.0 (the "License");
839
+ * you may not use this file except in compliance with the License.
840
+ * You may obtain a copy of the License at
841
+ *
842
+ * http://www.apache.org/licenses/LICENSE-2.0
843
+ *
844
+ * Unless required by applicable law or agreed to in writing, software
845
+ * distributed under the License is distributed on an "AS IS" BASIS,
846
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
847
+ * See the License for the specific language governing permissions and
848
+ * limitations under the License.
849
+ * ========================================================== */
850
+
851
+!function( $ ) {
852
+
853
+  "use strict"
854
+
855
+ /* TOOLTIP PUBLIC CLASS DEFINITION
856
+  * =============================== */
857
+
858
+  var Tooltip = function ( element, options ) {
859
+    this.init('tooltip', element, options)
860
+  }
861
+
862
+  Tooltip.prototype = {
863
+
864
+    constructor: Tooltip
865
+
866
+  , init: function ( type, element, options ) {
867
+      var eventIn
868
+        , eventOut
869
+
870
+      this.type = type
871
+      this.$element = $(element)
872
+      this.options = this.getOptions(options)
873
+      this.enabled = true
874
+
875
+      if (this.options.trigger != 'manual') {
876
+        eventIn  = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
877
+        eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
878
+        this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
879
+        this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
880
+      }
881
+
882
+      this.options.selector ?
883
+        (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
884
+        this.fixTitle()
885
+    }
886
+
887
+  , getOptions: function ( options ) {
888
+      options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
889
+
890
+      if (options.delay && typeof options.delay == 'number') {
891
+        options.delay = {
892
+          show: options.delay
893
+        , hide: options.delay
894
+        }
895
+      }
896
+
897
+      return options
898
+    }
899
+
900
+  , enter: function ( e ) {
901
+      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
902
+
903
+      if (!self.options.delay || !self.options.delay.show) {
904
+        self.show()
905
+      } else {
906
+        self.hoverState = 'in'
907
+        setTimeout(function() {
908
+          if (self.hoverState == 'in') {
909
+            self.show()
910
+          }
911
+        }, self.options.delay.show)
912
+      }
913
+    }
914
+
915
+  , leave: function ( e ) {
916
+      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
917
+
918
+      if (!self.options.delay || !self.options.delay.hide) {
919
+        self.hide()
920
+      } else {
921
+        self.hoverState = 'out'
922
+        setTimeout(function() {
923
+          if (self.hoverState == 'out') {
924
+            self.hide()
925
+          }
926
+        }, self.options.delay.hide)
927
+      }
928
+    }
929
+
930
+  , show: function () {
931
+      var $tip
932
+        , inside
933
+        , pos
934
+        , actualWidth
935
+        , actualHeight
936
+        , placement
937
+        , tp
938
+
939
+      if (this.hasContent() && this.enabled) {
940
+        $tip = this.tip()
941
+        this.setContent()
942
+
943
+        if (this.options.animation) {
944
+          $tip.addClass('fade')
945
+        }
946
+
947
+        placement = typeof this.options.placement == 'function' ?
948
+          this.options.placement.call(this, $tip[0], this.$element[0]) :
949
+          this.options.placement
950
+
951
+        inside = /in/.test(placement)
952
+
953
+        $tip
954
+          .remove()
955
+          .css({ top: 0, left: 0, display: 'block' })
956
+          .appendTo(inside ? this.$element : document.body)
957
+
958
+        pos = this.getPosition(inside)
959
+
960
+        actualWidth = $tip[0].offsetWidth
961
+        actualHeight = $tip[0].offsetHeight
962
+
963
+        switch (inside ? placement.split(' ')[1] : placement) {
964
+          case 'bottom':
965
+            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
966
+            break
967
+          case 'top':
968
+            tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
969
+            break
970
+          case 'left':
971
+            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
972
+            break
973
+          case 'right':
974
+            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
975
+            break
976
+        }
977
+
978
+        $tip
979
+          .css(tp)
980
+          .addClass(placement)
981
+          .addClass('in')
982
+      }
983
+    }
984
+
985
+  , setContent: function () {
986
+      var $tip = this.tip()
987
+      $tip.find('.tooltip-inner').html(this.getTitle())
988
+      $tip.removeClass('fade in top bottom left right')
989
+    }
990
+
991
+  , hide: function () {
992
+      var that = this
993
+        , $tip = this.tip()
994
+
995
+      $tip.removeClass('in')
996
+
997
+      function removeWithAnimation() {
998
+        var timeout = setTimeout(function () {
999
+          $tip.off($.support.transition.end).remove()
1000
+        }, 500)
1001
+
1002
+        $tip.one($.support.transition.end, function () {
1003
+          clearTimeout(timeout)
1004
+          $tip.remove()
1005
+        })
1006
+      }
1007
+
1008
+      $.support.transition && this.$tip.hasClass('fade') ?
1009
+        removeWithAnimation() :
1010
+        $tip.remove()
1011
+    }
1012
+
1013
+  , fixTitle: function () {
1014
+      var $e = this.$element
1015
+      if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
1016
+        $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
1017
+      }
1018
+    }
1019
+
1020
+  , hasContent: function () {
1021
+      return this.getTitle()
1022
+    }
1023
+
1024
+  , getPosition: function (inside) {
1025
+      return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
1026
+        width: this.$element[0].offsetWidth
1027
+      , height: this.$element[0].offsetHeight
1028
+      })
1029
+    }
1030
+
1031
+  , getTitle: function () {
1032
+      var title
1033
+        , $e = this.$element
1034
+        , o = this.options
1035
+
1036
+      title = $e.attr('data-original-title')
1037
+        || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
1038
+
1039
+      title = title.toString().replace(/(^\s*|\s*$)/, "")
1040
+
1041
+      return title
1042
+    }
1043
+
1044
+  , tip: function () {
1045
+      return this.$tip = this.$tip || $(this.options.template)
1046
+    }
1047
+
1048
+  , validate: function () {
1049
+      if (!this.$element[0].parentNode) {
1050
+        this.hide()
1051
+        this.$element = null
1052
+        this.options = null
1053
+      }
1054
+    }
1055
+
1056
+  , enable: function () {
1057
+      this.enabled = true
1058
+    }
1059
+
1060
+  , disable: function () {
1061
+      this.enabled = false
1062
+    }
1063
+
1064
+  , toggleEnabled: function () {
1065
+      this.enabled = !this.enabled
1066
+    }
1067
+
1068
+  , toggle: function () {
1069
+      this[this.tip().hasClass('in') ? 'hide' : 'show']()
1070
+    }
1071
+
1072
+  }
1073
+
1074
+
1075
+ /* TOOLTIP PLUGIN DEFINITION
1076
+  * ========================= */
1077
+
1078
+  $.fn.tooltip = function ( option ) {
1079
+    return this.each(function () {
1080
+      var $this = $(this)
1081
+        , data = $this.data('tooltip')
1082
+        , options = typeof option == 'object' && option
1083
+      if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
1084
+      if (typeof option == 'string') data[option]()
1085
+    })
1086
+  }
1087
+
1088
+  $.fn.tooltip.Constructor = Tooltip
1089
+
1090
+  $.fn.tooltip.defaults = {
1091
+    animation: true
1092
+  , delay: 0
1093
+  , selector: false
1094
+  , placement: 'top'
1095
+  , trigger: 'hover'
1096
+  , title: ''
1097
+  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
1098
+  }
1099
+
1100
+}( window.jQuery )
1101
+/* ===========================================================
1102
+ * bootstrap-popover.js v2.0.0
1103
+ * http://twitter.github.com/bootstrap/javascript.html#popovers
1104
+ * ===========================================================
1105
+ * Copyright 2012 Twitter, Inc.
1106
+ *
1107
+ * Licensed under the Apache License, Version 2.0 (the "License");
1108
+ * you may not use this file except in compliance with the License.
1109
+ * You may obtain a copy of the License at
1110
+ *
1111
+ * http://www.apache.org/licenses/LICENSE-2.0
1112
+ *
1113
+ * Unless required by applicable law or agreed to in writing, software
1114
+ * distributed under the License is distributed on an "AS IS" BASIS,
1115
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1116
+ * See the License for the specific language governing permissions and
1117
+ * limitations under the License.
1118
+ * =========================================================== */
1119
+
1120
+
1121
+!function( $ ) {
1122
+
1123
+ "use strict"
1124
+
1125
+  var Popover = function ( element, options ) {
1126
+    this.init('popover', element, options)
1127
+  }
1128
+
1129
+  /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
1130
+     ========================================== */
1131
+
1132
+  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
1133
+
1134
+    constructor: Popover
1135
+
1136
+  , setContent: function () {
1137
+      var $tip = this.tip()
1138
+        , title = this.getTitle()
1139
+        , content = this.getContent()
1140
+
1141
+      $tip.find('.popover-title')[ $.type(title) == 'object' ? 'append' : 'html' ](title)
1142
+      $tip.find('.popover-content > *')[ $.type(content) == 'object' ? 'append' : 'html' ](content)
1143
+
1144
+      $tip.removeClass('fade top bottom left right in')
1145
+    }
1146
+
1147
+  , hasContent: function () {
1148
+      return this.getTitle() || this.getContent()
1149
+    }
1150
+
1151
+  , getContent: function () {
1152
+      var content
1153
+        , $e = this.$element
1154
+        , o = this.options
1155
+
1156
+      content = $e.attr('data-content')
1157
+        || (typeof o.content == 'function' ? o.content.call($e[0]) :  o.content)
1158
+
1159
+      content = content.toString().replace(/(^\s*|\s*$)/, "")
1160
+
1161
+      return content
1162
+    }
1163
+
1164
+  , tip: function() {
1165
+      if (!this.$tip) {
1166
+        this.$tip = $(this.options.template)
1167
+      }
1168
+      return this.$tip
1169
+    }
1170
+
1171
+  })
1172
+
1173
+
1174
+ /* POPOVER PLUGIN DEFINITION
1175
+  * ======================= */
1176
+
1177
+  $.fn.popover = function ( option ) {
1178
+    return this.each(function () {
1179
+      var $this = $(this)
1180
+        , data = $this.data('popover')
1181
+        , options = typeof option == 'object' && option
1182
+      if (!data) $this.data('popover', (data = new Popover(this, options)))
1183
+      if (typeof option == 'string') data[option]()
1184
+    })
1185
+  }
1186
+
1187
+  $.fn.popover.Constructor = Popover
1188
+
1189
+  $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
1190
+    placement: 'right'
1191
+  , content: ''
1192
+  , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
1193
+  })
1194
+
1195
+}( window.jQuery )
1196
+/* =============================================================
1197
+ * bootstrap-scrollspy.js v2.0.0
1198
+ * http://twitter.github.com/bootstrap/javascript.html#scrollspy
1199
+ * =============================================================
1200
+ * Copyright 2012 Twitter, Inc.
1201
+ *
1202
+ * Licensed under the Apache License, Version 2.0 (the "License");
1203
+ * you may not use this file except in compliance with the License.
1204
+ * You may obtain a copy of the License at
1205
+ *
1206
+ * http://www.apache.org/licenses/LICENSE-2.0
1207
+ *
1208
+ * Unless required by applicable law or agreed to in writing, software
1209
+ * distributed under the License is distributed on an "AS IS" BASIS,
1210
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1211
+ * See the License for the specific language governing permissions and
1212
+ * limitations under the License.
1213
+ * ============================================================== */
1214
+
1215
+!function ( $ ) {
1216
+
1217
+  "use strict"
1218
+
1219
+  /* SCROLLSPY CLASS DEFINITION
1220
+   * ========================== */
1221
+
1222
+  function ScrollSpy( element, options) {
1223
+    var process = $.proxy(this.process, this)
1224
+      , $element = $(element).is('body') ? $(window) : $(element)
1225
+      , href
1226
+    this.options = $.extend({}, $.fn.scrollspy.defaults, options)
1227
+    this.$scrollElement = $element.on('scroll.scroll.data-api', process)
1228
+    this.selector = (this.options.target
1229
+      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
1230
+      || '') + ' .nav li > a'
1231
+    this.$body = $('body').on('click.scroll.data-api', this.selector, process)
1232
+    this.refresh()
1233
+    this.process()
1234
+  }
1235
+
1236
+  ScrollSpy.prototype = {
1237
+
1238
+      constructor: ScrollSpy
1239
+
1240
+    , refresh: function () {
1241
+        this.targets = this.$body
1242
+          .find(this.selector)
1243
+          .map(function () {
1244
+            var href = $(this).attr('href')
1245
+            return /^#\w/.test(href) && $(href).length ? href : null
1246
+          })
1247
+
1248
+        this.offsets = $.map(this.targets, function (id) {
1249
+          return $(id).position().top
1250
+        })
1251
+      }
1252
+
1253
+    , process: function () {
1254
+        var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
1255
+          , offsets = this.offsets
1256
+          , targets = this.targets
1257
+          , activeTarget = this.activeTarget
1258
+          , i
1259
+
1260
+        for (i = offsets.length; i--;) {
1261
+          activeTarget != targets[i]
1262
+            && scrollTop >= offsets[i]
1263
+            && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
1264
+            && this.activate( targets[i] )
1265
+        }
1266
+      }
1267
+
1268
+    , activate: function (target) {
1269
+        var active
1270
+
1271
+        this.activeTarget = target
1272
+
1273
+        this.$body
1274
+          .find(this.selector).parent('.active')
1275
+          .removeClass('active')
1276
+
1277
+        active = this.$body
1278
+          .find(this.selector + '[href="' + target + '"]')
1279
+          .parent('li')
1280
+          .addClass('active')
1281
+
1282
+        if ( active.parent('.dropdown-menu') )  {
1283
+          active.closest('li.dropdown').addClass('active')
1284
+        }
1285
+      }
1286
+
1287
+  }
1288
+
1289
+
1290
+ /* SCROLLSPY PLUGIN DEFINITION
1291
+  * =========================== */
1292
+
1293
+  $.fn.scrollspy = function ( option ) {
1294
+    return this.each(function () {
1295
+      var $this = $(this)
1296
+        , data = $this.data('scrollspy')
1297
+        , options = typeof option == 'object' && option
1298
+      if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
1299
+      if (typeof option == 'string') data[option]()
1300
+    })
1301
+  }
1302
+
1303
+  $.fn.scrollspy.Constructor = ScrollSpy
1304
+
1305
+  $.fn.scrollspy.defaults = {
1306
+    offset: 10
1307
+  }
1308
+
1309
+
1310
+ /* SCROLLSPY DATA-API
1311
+  * ================== */
1312
+
1313
+  $(function () {
1314
+    $('[data-spy="scroll"]').each(function () {
1315
+      var $spy = $(this)
1316
+      $spy.scrollspy($spy.data())
1317
+    })
1318
+  })
1319
+
1320
+}( window.jQuery )
1321
+/* ========================================================
1322
+ * bootstrap-tab.js v2.0.0
1323
+ * http://twitter.github.com/bootstrap/javascript.html#tabs
1324
+ * ========================================================
1325
+ * Copyright 2012 Twitter, Inc.
1326
+ *
1327
+ * Licensed under the Apache License, Version 2.0 (the "License");
1328
+ * you may not use this file except in compliance with the License.
1329
+ * You may obtain a copy of the License at
1330
+ *
1331
+ * http://www.apache.org/licenses/LICENSE-2.0
1332
+ *
1333
+ * Unless required by applicable law or agreed to in writing, software
1334
+ * distributed under the License is distributed on an "AS IS" BASIS,
1335
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1336
+ * See the License for the specific language governing permissions and
1337
+ * limitations under the License.
1338
+ * ======================================================== */
1339
+
1340
+
1341
+!function( $ ){
1342
+
1343
+  "use strict"
1344
+
1345
+ /* TAB CLASS DEFINITION
1346
+  * ==================== */
1347
+
1348
+  var Tab = function ( element ) {
1349
+    this.element = $(element)
1350
+  }
1351
+
1352
+  Tab.prototype = {
1353
+
1354
+    constructor: Tab
1355
+
1356
+  , show: function () {
1357
+      var $this = this.element
1358
+        , $ul = $this.closest('ul:not(.dropdown-menu)')
1359
+        , selector = $this.attr('data-target')
1360
+        , previous
1361
+        , $target
1362
+
1363
+      if (!selector) {
1364
+        selector = $this.attr('href')
1365
+        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
1366
+      }
1367
+
1368
+      if ( $this.parent('li').hasClass('active') ) return
1369
+
1370
+      previous = $ul.find('.active a').last()[0]
1371
+
1372
+      $this.trigger({
1373
+        type: 'show'
1374
+      , relatedTarget: previous
1375
+      })
1376
+
1377
+      $target = $(selector)
1378
+
1379
+      this.activate($this.parent('li'), $ul)
1380
+      this.activate($target, $target.parent(), function () {
1381
+        $this.trigger({
1382
+          type: 'shown'
1383
+        , relatedTarget: previous
1384
+        })
1385
+      })
1386
+    }
1387
+
1388
+  , activate: function ( element, container, callback) {
1389
+      var $active = container.find('> .active')
1390
+        , transition = callback
1391
+            && $.support.transition
1392
+            && $active.hasClass('fade')
1393
+
1394
+      function next() {
1395
+        $active
1396
+          .removeClass('active')
1397
+          .find('> .dropdown-menu > .active')
1398
+          .removeClass('active')
1399
+
1400
+        element.addClass('active')
1401
+
1402
+        if (transition) {
1403
+          element[0].offsetWidth // reflow for transition
1404
+          element.addClass('in')
1405
+        } else {
1406
+          element.removeClass('fade')
1407
+        }
1408
+
1409
+        if ( element.parent('.dropdown-menu') ) {
1410
+          element.closest('li.dropdown').addClass('active')
1411
+        }
1412
+
1413
+        callback && callback()
1414
+      }
1415
+
1416
+      transition ?
1417
+        $active.one($.support.transition.end, next) :
1418
+        next()
1419
+
1420
+      $active.removeClass('in')
1421
+    }
1422
+  }
1423
+
1424
+
1425
+ /* TAB PLUGIN DEFINITION
1426
+  * ===================== */
1427
+
1428
+  $.fn.tab = function ( option ) {
1429
+    return this.each(function () {
1430
+      var $this = $(this)
1431
+        , data = $this.data('tab')
1432
+      if (!data) $this.data('tab', (data = new Tab(this)))
1433
+      if (typeof option == 'string') data[option]()
1434
+    })
1435
+  }
1436
+
1437
+  $.fn.tab.Constructor = Tab
1438
+
1439
+
1440
+ /* TAB DATA-API
1441
+  * ============ */
1442
+
1443
+  $(function () {
1444
+    $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
1445
+      e.preventDefault()
1446
+      $(this).tab('show')
1447
+    })
1448
+  })
1449
+
1450
+}( window.jQuery )
1451
+/* =============================================================
1452
+ * bootstrap-typeahead.js v2.0.0
1453
+ * http://twitter.github.com/bootstrap/javascript.html#typeahead
1454
+ * =============================================================
1455
+ * Copyright 2012 Twitter, Inc.
1456
+ *
1457
+ * Licensed under the Apache License, Version 2.0 (the "License");
1458
+ * you may not use this file except in compliance with the License.
1459
+ * You may obtain a copy of the License at
1460
+ *
1461
+ * http://www.apache.org/licenses/LICENSE-2.0
1462
+ *
1463
+ * Unless required by applicable law or agreed to in writing, software
1464
+ * distributed under the License is distributed on an "AS IS" BASIS,
1465
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1466
+ * See the License for the specific language governing permissions and
1467
+ * limitations under the License.
1468
+ * ============================================================ */
1469
+
1470
+!function( $ ){
1471
+
1472
+  "use strict"
1473
+
1474
+  var Typeahead = function ( element, options ) {
1475
+    this.$element = $(element)
1476
+    this.options = $.extend({}, $.fn.typeahead.defaults, options)
1477
+    this.matcher = this.options.matcher || this.matcher
1478
+    this.sorter = this.options.sorter || this.sorter
1479
+    this.highlighter = this.options.highlighter || this.highlighter
1480
+    this.$menu = $(this.options.menu).appendTo('body')
1481
+    this.source = this.options.source
1482
+    this.shown = false
1483
+    this.listen()
1484
+  }
1485
+
1486
+  Typeahead.prototype = {
1487
+
1488
+    constructor: Typeahead
1489
+
1490
+  , select: function () {
1491
+      var val = this.$menu.find('.active').attr('data-value')
1492
+      this.$element.val(val)
1493
+      return this.hide()
1494
+    }
1495
+
1496
+  , show: function () {
1497
+      var pos = $.extend({}, this.$element.offset(), {
1498
+        height: this.$element[0].offsetHeight
1499
+      })
1500
+
1501
+      this.$menu.css({
1502
+        top: pos.top + pos.height
1503
+      , left: pos.left
1504
+      })
1505
+
1506
+      this.$menu.show()
1507
+      this.shown = true
1508
+      return this
1509
+    }
1510
+
1511
+  , hide: function () {
1512
+      this.$menu.hide()
1513
+      this.shown = false
1514
+      return this
1515
+    }
1516
+
1517
+  , lookup: function (event) {
1518
+      var that = this
1519
+        , items
1520
+        , q
1521
+
1522
+      this.query = this.$element.val()
1523
+
1524
+      if (!this.query) {
1525
+        return this.shown ? this.hide() : this
1526
+      }
1527
+
1528
+      items = $.grep(this.source, function (item) {
1529
+        if (that.matcher(item)) return item
1530
+      })
1531
+
1532
+      items = this.sorter(items)
1533
+
1534
+      if (!items.length) {
1535
+        return this.shown ? this.hide() : this
1536
+      }
1537
+
1538
+      return this.render(items.slice(0, this.options.items)).show()
1539
+    }
1540
+
1541
+  , matcher: function (item) {
1542
+      return ~item.toLowerCase().indexOf(this.query.toLowerCase())
1543
+    }
1544
+
1545
+  , sorter: function (items) {
1546
+      var beginswith = []
1547
+        , caseSensitive = []
1548
+        , caseInsensitive = []
1549
+        , item
1550
+
1551
+      while (item = items.shift()) {
1552
+        if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
1553
+        else if (~item.indexOf(this.query)) caseSensitive.push(item)
1554
+        else caseInsensitive.push(item)
1555
+      }
1556
+
1557
+      return beginswith.concat(caseSensitive, caseInsensitive)
1558
+    }
1559
+
1560
+  , highlighter: function (item) {
1561
+      return item.replace(new RegExp('(' + this.query + ')', 'ig'), function ($1, match) {
1562
+        return '<strong>' + match + '</strong>'
1563
+      })
1564
+    }
1565
+
1566
+  , render: function (items) {
1567
+      var that = this
1568
+
1569
+      items = $(items).map(function (i, item) {
1570
+        i = $(that.options.item).attr('data-value', item)
1571
+        i.find('a').html(that.highlighter(item))
1572
+        return i[0]
1573
+      })
1574
+
1575
+      items.first().addClass('active')
1576
+      this.$menu.html(items)
1577
+      return this
1578
+    }
1579
+
1580
+  , next: function (event) {
1581
+      var active = this.$menu.find('.active').removeClass('active')
1582
+        , next = active.next()
1583
+
1584
+      if (!next.length) {
1585
+        next = $(this.$menu.find('li')[0])
1586
+      }
1587
+
1588
+      next.addClass('active')
1589
+    }
1590
+
1591
+  , prev: function (event) {
1592
+      var active = this.$menu.find('.active').removeClass('active')
1593
+        , prev = active.prev()
1594
+
1595
+      if (!prev.length) {
1596
+        prev = this.$menu.find('li').last()
1597
+      }
1598
+
1599
+      prev.addClass('active')
1600
+    }
1601
+
1602
+  , listen: function () {
1603
+      this.$element
1604
+        .on('blur',     $.proxy(this.blur, this))
1605
+        .on('keypress', $.proxy(this.keypress, this))
1606
+        .on('keyup',    $.proxy(this.keyup, this))
1607
+
1608
+      if ($.browser.webkit || $.browser.msie) {
1609
+        this.$element.on('keydown', $.proxy(this.keypress, this))
1610
+      }
1611
+
1612
+      this.$menu
1613
+        .on('click', $.proxy(this.click, this))
1614
+        .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
1615
+    }
1616
+
1617
+  , keyup: function (e) {
1618
+      e.stopPropagation()
1619
+      e.preventDefault()
1620
+
1621
+      switch(e.keyCode) {
1622
+        case 40: // down arrow
1623
+        case 38: // up arrow
1624
+          break
1625
+
1626
+        case 9: // tab
1627
+        case 13: // enter
1628
+          if (!this.shown) return
1629
+          this.select()
1630
+          break
1631
+
1632
+        case 27: // escape
1633
+          this.hide()
1634
+          break
1635
+
1636
+        default:
1637
+          this.lookup()
1638
+      }
1639
+
1640
+  }
1641
+
1642
+  , keypress: function (e) {
1643
+      e.stopPropagation()
1644
+      if (!this.shown) return
1645
+
1646
+      switch(e.keyCode) {
1647
+        case 9: // tab
1648
+        case 13: // enter
1649
+        case 27: // escape
1650
+          e.preventDefault()
1651
+          break
1652
+
1653
+        case 38: // up arrow
1654
+          e.preventDefault()
1655
+          this.prev()
1656
+          break
1657
+
1658
+        case 40: // down arrow
1659
+          e.preventDefault()
1660
+          this.next()
1661
+          break
1662
+      }
1663
+    }
1664
+
1665
+  , blur: function (e) {
1666
+      var that = this
1667
+      e.stopPropagation()
1668
+      e.preventDefault()
1669
+      setTimeout(function () { that.hide() }, 150)
1670
+    }
1671
+
1672
+  , click: function (e) {
1673
+      e.stopPropagation()
1674
+      e.preventDefault()
1675
+      this.select()
1676
+    }
1677
+
1678
+  , mouseenter: function (e) {
1679
+      this.$menu.find('.active').removeClass('active')
1680
+      $(e.currentTarget).addClass('active')
1681
+    }
1682
+
1683
+  }
1684
+
1685
+
1686
+  /* TYPEAHEAD PLUGIN DEFINITION
1687
+   * =========================== */
1688
+
1689
+  $.fn.typeahead = function ( option ) {
1690
+    return this.each(function () {
1691
+      var $this = $(this)
1692
+        , data = $this.data('typeahead')
1693
+        , options = typeof option == 'object' && option
1694
+      if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
1695
+      if (typeof option == 'string') data[option]()
1696
+    })
1697
+  }
1698
+
1699
+  $.fn.typeahead.defaults = {
1700
+    source: []
1701
+  , items: 8
1702
+  , menu: '<ul class="typeahead dropdown-menu"></ul>'
1703
+  , item: '<li><a href="#"></a></li>'
1704
+  }
1705
+
1706
+  $.fn.typeahead.Constructor = Typeahead
1707
+
1708
+
1709
+ /* TYPEAHEAD DATA-API
1710
+  * ================== */
1711
+
1712
+  $(function () {
1713
+    $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
1714
+      var $this = $(this)
1715
+      if ($this.data('typeahead')) return
1716
+      e.preventDefault()
1717
+      $this.typeahead($this.data())
1718
+    })
1719
+  })
1720
+
1721
+}( window.jQuery )
0 1722
new file mode 100644
... ...
@@ -0,0 +1 @@
0
+!function(a){a(function(){"use strict",a.support.transition=function(){var b=document.body||document.documentElement,c=b.style,d=c.transition!==undefined||c.WebkitTransition!==undefined||c.MozTransition!==undefined||c.MsTransition!==undefined||c.OTransition!==undefined;return d&&{end:function(){var b="TransitionEnd";return a.browser.webkit?b="webkitTransitionEnd":a.browser.mozilla?b="transitionend":a.browser.opera&&(b="oTransitionEnd"),b}()}}()})}(window.jQuery),!function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype={constructor:c,close:function(b){function f(){e.remove(),e.trigger("closed")}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),e=a(d),e.trigger("close"),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()}},a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a(function(){a("body").on("click.alert.data-api",b,c.prototype.close)})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype={constructor:b,setState:function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},toggle:function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")}},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){a(b.target).button("toggle")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.carousel.defaults,c),this.options.slide&&this.slide(this.options.slide)};b.prototype={cycle:function(){return this.interval=setInterval(a.proxy(this.next,this),this.options.interval),this},to:function(b){var c=this.$element.find(".active"),d=c.parent().children(),e=d.index(c),f=this;if(b>d.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(){return clearInterval(this.interval),this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this;return this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h](),!a.support.transition&&this.$element.hasClass("slide")?(this.$element.trigger("slide"),d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")):(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.trigger("slide"),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})),f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=typeof c=="object"&&c;e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):typeof c=="string"||(c=f.slide)?e[c]():e.cycle()})},a.fn.carousel.defaults={interval:5e3},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api","[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find(".in"),e;d&&d.length&&(e=d.data("collapse"),d.collapse("hide"),e||d.data("collapse",null)),this.$element[b](0),this.transition("addClass","show","shown"),this.$element[b](this.$element[0][c])},hide:function(){var a=this.dimension();this.reset(this.$element[a]()),this.transition("removeClass","hide","hidden"),this.$element[a](0)},reset:function(a){var b=this.dimension();this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element.addClass("collapse")},transition:function(b,c,d){var e=this,f=function(){c=="show"&&e.reset(),e.$element.trigger(d)};this.$element.trigger(c)[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();a(e).collapse(f)})})}(window.jQuery),!function(a){function d(){a(b).parent().removeClass("open")}"use strict";var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e=c.attr("data-target"),f,g;return e||(e=c.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,"")),f=a(e),f.length||(f=c.parent()),g=f.hasClass("open"),d(),!g&&f.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(f,this)):f.call(this)):b&&b()}function f(){this.$backdrop.remove(),this.$backdrop=null}function g(){var b=this;this.isShown&&this.options.keyboard?a(document).on("keyup.dismiss.modal",function(a){a.which==27&&b.hide()}):this.isShown||a(document).off("keyup.dismiss.modal")}"use strict";var b=function(b,c){this.options=a.extend({},a.fn.modal.defaults,c),this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this))};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this;if(this.isShown)return;a("body").addClass("modal-open"),this.isShown=!0,this.$element.trigger("show"),g.call(this),e.call(this,function(){var c=a.support.transition&&b.$element.hasClass("fade");!b.$element.parent().length&&b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in"),c?b.$element.one(a.support.transition.end,function(){b.$element.trigger("shown")}):b.$element.trigger("shown")})},hide:function(b){b&&b.preventDefault();if(!this.isShown)return;var e=this;this.isShown=!1,a("body").removeClass("modal-open"),g.call(this),this.$element.trigger("hide").removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?c.call(this):d.call(this)}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=typeof c=="object"&&c;e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({},e.data(),c.data());b.preventDefault(),e.modal(f)})})}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.show?c.show():(c.hoverState="in",setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show))},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.hide?c.hide():(c.hoverState="out",setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide))},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip();a.find(".tooltip-inner").html(this.getTitle()),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}var b=this,c=this.tip();c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove()},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,delay:0,selector:!1,placement:"top",trigger:"hover",title:"",template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'}}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var b=this.tip(),c=this.getTitle(),d=this.getContent();b.find(".popover-title")[a.type(c)=="object"?"append":"html"](c),b.find(".popover-content > *")[a.type(d)=="object"?"append":"html"](d),b.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",content:"",template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'})}(window.jQuery),!function(a){function b(b,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body").on("click.scroll.data-api",this.selector,d),this.refresh(),this.process()}"use strict",b.prototype={constructor:b,refresh:function(){this.targets=this.$body.find(this.selector).map(function(){var b=a(this).attr("href");return/^#\w/.test(b)&&a(b).length?b:null}),this.offsets=a.map(this.targets,function(b){return a(b).position().top})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.offsets,c=this.targets,d=this.activeTarget,e;for(e=b.length;e--;)d!=c[e]&&a>=b[e]&&(!b[e+1]||a<=b[e+1])&&this.activate(c[e])},activate:function(a){var b;this.activeTarget=a,this.$body.find(this.selector).parent(".active").removeClass("active"),b=this.$body.find(this.selector+'[href="'+a+'"]').parent("li").addClass("active"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active")}},a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a(function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active a").last()[0],b.trigger({type:"show",relatedTarget:e}),f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}},a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a(function(){a("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.$menu=a(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(a),this.hide()},show:function(){var b=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:b.top+b.height,left:b.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(b){var c=this,d,e;return this.query=this.$element.val(),this.query?(d=a.grep(this.source,function(a){if(c.matcher(a))return a}),d=this.sorter(d),d.length?this.render(d.slice(0,this.options.items)).show():this.shown?this.hide():this):this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){var b=[],c=[],d=[],e;while(e=a.shift())e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?c.push(e):d.push(e):b.push(e);return b.concat(c,d)},highlighter:function(a){return a.replace(new RegExp("("+this.query+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),(a.browser.webkit||a.browser.msie)&&this.$element.on("keydown",a.proxy(this.keypress,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},keyup:function(a){a.stopPropagation(),a.preventDefault();switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:this.hide();break;default:this.lookup()}},keypress:function(a){a.stopPropagation();if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}},blur:function(a){var b=this;a.stopPropagation(),a.preventDefault(),setTimeout(function(){b.hide()},150)},click:function(a){a.stopPropagation(),a.preventDefault(),this.select()},mouseenter:function(b){this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>'},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;b.preventDefault(),c.typeahead(c.data())})})}(window.jQuery);
0 1
\ No newline at end of file
1 2
new file mode 100644
... ...
@@ -0,0 +1,4 @@
0
+/*! jQuery v1.7.1 jquery.com | jquery.org/license */
1
+(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
2
+f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
3
+{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
0 4
\ No newline at end of file
1 5
new file mode 100644
... ...
@@ -0,0 +1,70 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>DevStack - Recent Changes</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+    
21
+    <!-- Le javascripts -->
22
+    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="overview.html">Overview</a></li>
34
+            <li><a href="changes.html">Changes</a></li>
35
+            <li><a href="faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container" id="home">
44
+      
45
+      <section id="faq" class="span12">
46
+
47
+        <div class='row pull-left'>
48
+          <h2>Recent Changes <small>What's been happening?</small></h2>
49
+          <p>These are the commits to DevStack for the last six months.  For the complete list see <a href="https://review.openstack.org/#/q/status:merged+project:openstack-dev/devstack,n,z">the DevStack project in Gerrit</a>.</p>
50
+
51
+          <ul class='pull-left'>
52
+            <!--
53
+              This list is generated by:
54
+              git log --pretty=format:'            <li>%s - <em>Commit <a href="https://review.openstack.org/#q,%h,n,z">%h</a> %cd</em></li>' --date=short --since 2014-01-01 | grep -v Merge
55
+            -->
56
+            <!-- Begin git log %GIT_LOG% -->
57
+            <!-- End git log -->
58
+          </ul>
59
+        </div>        
60
+
61
+      </section>
62
+
63
+      <footer>
64
+        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
65
+      </footer>
66
+
67
+    </div> <!-- /container -->
68
+  </body>
69
+</html>
0 70
new file mode 100644
... ...
@@ -0,0 +1,237 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>DevStack - Overview</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+
21
+    <!-- Le javascripts -->
22
+    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="overview.html">Overview</a></li>
34
+            <li><a href="changes.html">Changes</a></li>
35
+            <li><a href="faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container" id="home">
44
+
45
+      <section id="overview" class="span12">
46
+
47
+        <div class='row pull-left'>
48
+          <h2>Configuration <small>Making it go my way</small></h2>
49
+          <p>DevStack has always tried to be mostly-functional with a minimal amount of configuration.  The number of options has ballooned as projects add features, new projects added and more combinations need to be tested.  Historically DevStack obtained all local configuration and customizations from a <code>localrc</code> file.  The number of configuration variables that are simply passed-through to the individual project configuration files is also increasing.  The old mechanism for this (<code>EXTRAS_OPTS</code> and friends) required specific code for each file and did not scale well.</p>
50
+          <p>In Oct 2013 a new configuration method was introduced (in <a href="https://review.openstack.org/#/c/46768/">review 46768</a>) to hopefully simplify this process and meet the following goals:</p>
51
+          <ul>
52
+            <li>contain all non-default local configuration in a single file</li>
53
+            <li>be backward-compatible with <code>localrc</code> to smooth the transition process</li>
54
+            <li>allow settings in arbitrary configuration files to be changed</li>
55
+          </ul>
56
+
57
+          <h3>local.conf</h3>
58
+          <p>The new configuration file is <code>local.conf</code> and resides in the root DevStack directory like the old <code>localrc</code> file.  It is a modified INI format file that introduces a meta-section header to carry additional information regarding the configuration files to be changed.</p>
59
+
60
+          <p>The new header is similar to a normal INI section header but with double brackets (<code>[[ ... ]]</code>) and two internal fields separated by a pipe (<code>|</code>):</p>
61
+<pre>[[ &lt;phase&gt; | &lt;config-file-name&gt; ]]
62
+</pre>
63
+
64
+          <p>where <code>&lt;phase&gt;</code> is one of a set of phase names defined by <code>stack.sh</code> and <code>&lt;config-file-name&gt;</code> is the configuration filename.  The filename is eval'ed in the <code>stack.sh</code> context so all environment variables are available and may be used.  Using the project config file variables in the header is strongly suggested (see the <code>NOVA_CONF</code> example below).  If the path of the config file does not exist it is skipped.</p>
65
+
66
+          <p>The defined phases are:</p>
67
+          <ul>
68
+            <li><strong>local</strong> - extracts <code>localrc</code> from <code>local.conf</code> before <code>stackrc</code> is sourced</li>
69
+            <li><strong>pre-install</strong> - runs after the system packages are installed but before any of the source repositories are installed</li>
70
+            <li><strong>install</strong> - runs immediately after the repo installations are complete</li>
71
+            <li><strong>post-config</strong> - runs after the layer 2 services are configured and before they are started</li>
72
+            <li><strong>extra</strong> - runs after services are started and before any files in <code>extra.d</code> are executed
73
+          </ul>
74
+
75
+          <p>The file is processed strictly in sequence; meta-sections may be specified more than once but if any settings are duplicated the last to appear in the file will be used.</p>
76
+<pre>[[post-config|$NOVA_CONF]]
77
+[DEFAULT]
78
+use_syslog = True
79
+
80
+[osapi_v3]
81
+enabled = False
82
+</pre>
83
+
84
+          <p>A specific meta-section <code>local|localrc</code> is used to
85
+          provide a default <code>localrc</code> file (actually
86
+          <code>.localrc.auto</code>).  This allows all custom settings
87
+          for DevStack to be contained in a single file.  If <code>localrc</code>
88
+          exists it will be used instead to preserve backward-compatibility.  More
89
+          details on the <a href="localrc.html">contents of localrc</a> are available.</p>
90
+<pre>[[local|localrc]]
91
+FIXED_RANGE=10.254.1.0/24
92
+ADMIN_PASSWORD=speciale
93
+LOGFILE=$DEST/logs/stack.sh.log
94
+</pre>
95
+
96
+          <p>Note that <code>Q_PLUGIN_CONF_FILE</code> is unique in that it is assumed to <em>NOT</em> start with a <code>/</code> (slash) character.  A slash will need to be added:</p>
97
+<pre>[[post-config|/$Q_PLUGIN_CONF_FILE]]
98
+</pre>
99
+
100
+          <p>Also note that the <code>localrc</code> section is sourced as a shell script fragment amd <string>MUST</strong> conform to the shell requirements, specifically no whitespace around <code>=</code> (equals).</p>
101
+
102
+          <a id="minimal"></a>
103
+          <h3>Minimal Configuration</h3>
104
+          <p>While <code>stack.sh</code> is happy to run without a <code>localrc</code> section in <code>local.conf</code>, devlife is better when there are a few minimal variables set. This is an example of a minimal configuration that touches the values that most often need to be set.</p>
105
+          <ul>
106
+            <li>no logging</li>
107
+            <li>pre-set the passwords to prevent interactive prompts</li>
108
+            <li>move network ranges away from the local network (<code>FIXED_RANGE</code> and <code>FLOATING_RANGE</code>, commented out below)</li>
109
+            <li>set the host IP if detection is unreliable (<code>HOST_IP</code>, commented out below)</li>
110
+          </ul>
111
+          <pre>[[local|localrc]]
112
+ADMIN_PASSWORD=secrete
113
+DATABASE_PASSWORD=$ADMIN_PASSWORD
114
+RABBIT_PASSWORD=$ADMIN_PASSWORD
115
+SERVICE_PASSWORD=$ADMIN_PASSWORD
116
+SERVICE_TOKEN=a682f596-76f3-11e3-b3b2-e716f9080d50
117
+#FIXED_RANGE=172.31.1.0/24
118
+#FLOATING_RANGE=192.168.20.0/25
119
+#HOST_IP=10.3.4.5</pre>
120
+          <p>If the <code>*_PASSWORD</code> variables are not set here you will be prompted to enter values for them by <code>stack.sh</code>.</p>
121
+          <p>The network ranges must not overlap with any networks in use on the host.  Overlap is not uncommon as RFC-1918 'private' ranges are commonly used for both the local networking and Nova's fixed and floating ranges.</p>
122
+          <p><code>HOST_IP</code> is normally detected on the first run of <code>stack.sh</code> but often is indeterminate on later runs due to the IP being moved from an Ethernet integace to a bridge on the host.  Setting it here also makes it available for <code>openrc</code> to set <code>OS_AUTH_URL</code>.  <code>HOST_IP</code> is not set by default.</p>
123
+
124
+          <h3>Common Configuration Variables</h3>
125
+          <dl>
126
+            <dt>Set DevStack install directory</dt>
127
+            <dd><em>Default: <code>DEST=/opt/stack</code></em><br />
128
+            The DevStack install directory is set by the <code>DEST</code> variable. By setting it early in the <code>localrc</code> section you can reference it in later variables.  It can be useful to set it even though it is not changed from the default value.
129
+            <pre>DEST=/opt/stack</pre></dd>
130
+
131
+            <dt>stack.sh logging</dt>
132
+            <dd><em>Defaults: <code>LOGFILE="" LOGDAYS=7 LOG_COLOR=True</code></em><br />
133
+            By default <code>stack.sh</code> output is only written to the console where is runs.  It can be sent to a file in addition to the console by setting <code>LOGFILE</code> to the fully-qualified name of the destination log file.  A timestamp will be appended to the given filename for each run of <code>stack.sh</code>.
134
+            <pre>LOGFILE=$DEST/logs/stack.sh.log</pre>
135
+            Old log files are cleaned automatically if <code>LOGDAYS</code> is set to the number of days of old log files to keep.
136
+            <pre>LOGDAYS=1</pre>
137
+            The some of the project logs (Nova, Cinder, etc) will be colorized by default (if <code>SYSLOG</code> is not set below); this can be turned off by setting <code>LOG_COLOR</code> False.
138
+            <pre>LOG_COLOR=False</pre></dd>
139
+
140
+            <dt>Screen logging</dt>
141
+            <dd><em>Default: <code>SCREEN_LOGDIR=""</code></em><br />
142
+            By default DevStack runs the OpenStack services using <code>screen</code> which is useful for watching log and debug output.  However, in automated testing the interactive <code>screen</code> sessions may not be available after the fact; setting <code>SCREEN_LOGDIR</code> enables logging of the <code>screen</code> sessions in the specified diretory.  There will be one file per <code>screen</code> session named for the session name and a timestamp.  
143
+            <pre>SCREEN_LOGDIR=$DEST/logs/screen</pre>
144
+            <em>Note the use of <code>DEST</code> to locate the main install directory; this is why we suggest setting it in <code>local.conf</code>.</em></dd><br />
145
+
146
+            <dt>One syslog to bind them all</dt>
147
+            <dd><em>Default: <code>SYSLOG=False SYSLOG_HOST=$HOST_IP SYSLOG_PORT=516</code></em><br />
148
+            Logging all services to a single syslog can be convenient.  Enable syslogging by setting <code>SYSLOG</code> to <code>True</code>. If the destination log host is not localhost <code>SYSLOG_HOST</code> and <code>SYSLOG_PORT</code> can be used to direct the message stream to the log host.
149
+            <pre>SYSLOG=True
150
+SYSLOG_HOST=$HOST_IP
151
+SYSLOG_PORT=516</pre></dd>
152
+
153
+            <dt>A clean install every time</dt>
154
+            <dd><em>Default: <code>RECLONE=""</code></em><br />
155
+            By default <code>stack.sh</code> only clones the project repos if they do not exist in <code>$DEST</code>.  <code>stack.sh</code> will freshen each repo on each run if <code>RECLONE</code> is set to <code>yes</code>. This avoids having to manually remove repos in order to get the current branch from <code>$GIT_BASE</code>.
156
+            <pre>RECLONE=yes</code></dd>
157
+
158
+            <dt>Swift</dt>
159
+            <dd><em>Default: <code>SWIFT_HASH="" SWIFT_REPLICAS=1 SWIFT_DATA_DIR=$DEST/data/swift</code></em><br />
160
+            Swift is now used as the back-end for the S3-like object store.  When enabled Nova's objectstore (n-obj in <code>ENABLED_SERVICES</code>) is automatically disabled. Enable Swift by adding it services to <code>ENABLED_SERVICES</code>:
161
+            <pre>enable_service s-proxy s-object s-container s-account</pre>
162
+            Setting Swift's hash value is required and you will be prompted for it if Swift is enabled so just set it to something already:
163
+            <pre>SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5</pre>
164
+            For development purposes the default number of replicas is set to <code>1</code> to reduce the overhead required.  To better simulate a production deployment set this to <code>3</code> or more.
165
+            <pre>SWIFT_REPLICAS=3</pre>
166
+            The data for Swift is stored in the source tree by default
167
+            (in <code>$DEST/swift/data</code>) and can be moved by setting
168
+            <code>SWIFT_DATA_DIR</code>.  The specified directory will be created if it does not exist.
169
+            <pre>SWIFT_DATA_DIR=$DEST/data/swift</pre>
170
+            <em>Note: Previously just enabling <code>swift</code> was sufficient to start the Swift services.  That does not provide proper service granularity, particularly in multi-host configurations, and is considered deprecated.  Some service combination tests now check for specific Swift services and the old blanket acceptance will longer work correctly.</em>
171
+            </dd>
172
+
173
+            <dt>Service Catalog Backend</dt>
174
+            <dd><em>Default: <code>KEYSTONE_CATALOG_BACKEND=sql</code></em><br />
175
+            DevStack uses Keystone's <code>sql</code> service catalog backend.  An alternate <code>template</code> backend is also available.  However, it does not support the <code>service-*</code> and <code>endpoint-*</code> commands of the <code>keystone</code> CLI.  To
176
+            do so requires the <code>sql</code> backend be enabled:
177
+            <pre>KEYSTONE_CATALOG_BACKEND=template</pre>
178
+            DevStack's default configuration in <code>sql</code> mode is set in
179
+            <code>files/keystone_data.sh</code></dd>
180
+
181
+            <dt>Cinder</dt>
182
+            <dd><em>Default: <code>VOLUME_GROUP="stack-volumes" VOLUME_NAME_PREFIX="volume-" VOLUME_BACKING_FILE_SIZE=10250M</code></em><br />
183
+            The logical volume group used to hold the Cinder-managed volumes is set by <code>VOLUME_GROUP</code>, the logical volume name prefix is set with <code>VOLUME_NAME_PREFIX</code> and the size of the volume backing file is set with <code>VOLUME_BACKING_FILE_SIZE</code>.
184
+            <pre>VOLUME_GROUP="stack-volumes"
185
+VOLUME_NAME_PREFIX="volume-"
186
+VOLUME_BACKING_FILE_SIZE=10250M</pre></dd>
187
+
188
+            <dt>Multi-host DevStack</dt>
189
+            <dd><em>Default: <code>MULTI_HOST=False</code></em><br />
190
+            Running DevStack with multiple hosts requires a custom <code>local.conf</code> section for each host.  The master is the same as a single host installation with <code>MULTI_HOST=True</code>.  The slaves have fewer services enabled and a couple of host variables pointing to the master.  
191
+            <br /><br />
192
+            <strong>Master</strong>
193
+            <pre>MULTI_HOST=True</pre>
194
+
195
+            <strong>Slave</strong>
196
+            <pre>MYSQL_HOST=w.x.y.z
197
+RABBIT_HOST=w.x.y.z
198
+GLANCE_HOSTPORT=w.x.y.z:9292
199
+ENABLED_SERVICES=n-vol,n-cpu,n-net,n-api</pre></dd>
200
+
201
+            <dt>API rate limits</dt>
202
+            <dd><em>Default: <code>API_RATE_LIMIT=True</code><br />
203
+            Integration tests such as Tempest will likely run afoul of the default rate limits configured for Nova.  Turn off rate limiting during testing by setting <code>API_RATE_LIMIT=False</code>.
204
+            <pre>API_RATE_LIMIT=False</pre></dd>
205
+          </dl>
206
+
207
+          <h3>Examples</h3>
208
+          <ul>
209
+            <li>Eliminate a Cinder pass-through (<code>CINDER_PERIODIC_INTERVAL</code>):
210
+<pre>[[post-config|$CINDER_CONF]]
211
+[DEFAULT]
212
+periodic_interval = 60
213
+</pre></li>
214
+            <li>Sample <code>local.conf</code> with screen logging enabled:
215
+<pre>[[local|localrc]]
216
+FIXED_RANGE=10.254.1.0/24
217
+NETWORK_GATEWAY=10.254.1.1
218
+LOGDAYS=1
219
+LOGFILE=$DEST/logs/stack.sh.log
220
+SCREEN_LOGDIR=$DEST/logs/screen
221
+ADMIN_PASSWORD=quiet
222
+DATABASE_PASSWORD=$ADMIN_PASSWORD
223
+RABBIT_PASSWORD=$ADMIN_PASSWORD
224
+SERVICE_PASSWORD=$ADMIN_PASSWORD
225
+SERVICE_TOKEN=a682f596-76f3-11e3-b3b2-e716f9080d50</pre></li>
226
+          </ul>
227
+
228
+      </section>
229
+
230
+      <footer>
231
+        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
232
+      </footer>
233
+
234
+    </div> <!-- /container -->
235
+  </body>
236
+</html>
0 237
new file mode 100644
... ...
@@ -0,0 +1,88 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>DevStack - Overview</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+
21
+    <!-- Le javascripts -->
22
+    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="overview.html">Overview</a></li>
34
+            <li><a href="changes.html">Changes</a></li>
35
+            <li><a href="faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container" id="home">
44
+
45
+      <section id="overview" class="span12">
46
+
47
+        <div class='row pull-left'>
48
+          <h2>Contributing <small>Help us help you</small></h2>
49
+          <p>DevStack uses the standard OpenStack contribution process as outlined in <a href="https://wiki.openstack.org/wiki/How_To_Contribute">the OpenStack wiki 'How To Contribute'</a>.  This means that you will need to meet the requirements of the Contribututors License Agreement (CLA).  If you have already done that for another OpenStack project you are good to go.</p>
50
+
51
+          <h3>Things To Know</h3>
52
+
53
+          <br /><strong>Where Things Are</strong>
54
+          <p>The official DevStack repository is located at <code>git://github.com/openstack-dev/devstack.git</code> and <code>git://git.openstack.org/openstack-dev/devstack.git</code>, both mirrors of the official repo maintained by Gerrit.</p>
55
+          <p>The <a href="https://blueprints.launchpad.net/devstack">blueprint</a> and <a href="https://bugs.launchpad.net/devstack">bug trackers</a> are on Launchpad.  It should be noted that DevStack generally does not use these as strongly as other projects, but we're trying to change that.</p>
56
+          <p>The <a href="https://review.openstack.org/#/q/project:openstack-dev/devstack,n,z">Gerrit review queue</a> is, however, used for all commits except for the text of this website.  That should also change in the near future.</p>
57
+
58
+          <br /><strong>HACKING.rst</strong>
59
+          <p>Like most OpenStack projects, DevStack includes a <code>HACKING.rst</code> file that describes the layout, style and conventions of the project.  Because <code>HACKING.rst</code> is in the main DevStack repo it is considered authoritative.  Much of the content on this page is taken from there.</p>
60
+
61
+          <br /><strong>bashate Formatting</strong>
62
+          <p>Around the time of the OpenStack Havana release we added a tool to do style checking in DevStack similar to what pep8/flake8 do for Python projects.  It is still _very_ simplistic, focusing mostly on stray whitespace to help prevent -1 on reviews that are otherwise acceptable.  Oddly enough it is called <code>bashate</code>.  It will be expanded to enforce some of the documentation rules in comments that are used in formatting the script pages for devstack.org and possibly even simple code formatting.  Run it on the entire project with <code>./run_tests.sh</code>.</p>
63
+
64
+          <h3>Code</h3>
65
+
66
+          <br /><strong>Repo Layout</strong>
67
+          <p>The DevStack repo generally keeps all of the primary scripts at the root level.</p>
68
+          <p><code>docs</code> - Contains the source for this website.  It is built using <code>tools/build_docs.sh</code>.</p>
69
+          <p><code>exercises</code> - Contains the test scripts used to validate and demonstrate some OpenStack functions.  These scripts know how to exit early or skip services that are not enabled.</p>
70
+          <p><code>extras.d</code> - Contains the dispatch scripts called by the hooks in <code>stack.sh</code>, <code>unstack.sh</code> and <code>clean.sh</code>.  See <a href="plugins.html">the plugins docs</a> for more information.</p>
71
+          <p><code>files</code> - Contains a variety of otherwise lost files used in configuring and operating DevStack.  This includes templates for configuration files and the system dependency information.  This is also where image files are downloaded and expanded if necessary.</p>
72
+          <p><code>lib</code> - Contains the sub-scripts specific to each project.  This is where the work of managing a project's services is located.  Each top-level project (Keystone, Nova, etc) has a file here.  Additionally there are some for system services and project plugins.</p>
73
+          <p><code>samples</code> - Contains a sample of the local files not included in the DevStack repo.</p>
74
+          <p><code>tests</code> - the DevStack test suite is rather sparse, mostly consisting of test of specific fragile functions in the <code>functions</code> file.</p>
75
+          <p><code>tools</code> - Contains a collection of stand-alone scripts, some of which have aged a bit (does anyone still do ramdisk installs?).  While these may reference the top-level DevStack configuration they can generally be run alone.  There are also some sub-directories to support specific environments such as XenServer.</p>
76
+          
77
+
78
+
79
+      </section>
80
+
81
+      <footer>
82
+        <p>&copy; Openstack Foundation 2011-2013 &mdash; An <a href="https://wiki.openstack.org/wiki/Programs">OpenStack program</a> created by <a href="http://www.rackspace.com/cloud/private_edition/">Rackspace Cloud Builders</a></p>
83
+      </footer>
84
+
85
+    </div> <!-- /container -->
86
+  </body>
87
+</html>
0 88
new file mode 100644
... ...
@@ -0,0 +1,94 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>DevStack - eucarc</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+    
21
+    <!-- Le javascripts -->
22
+    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="overview.html">Overview</a></li>
34
+            <li><a href="changes.html">Changes</a></li>
35
+            <li><a href="faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container">
44
+
45
+      <section class="span12">
46
+        <div class="page-header">
47
+          <h2>eucarc <small>EC2 settings</small></h2>
48
+          <p><code>eucarc</code> creates EC2 credentials for the current user as
49
+            defined by <code>OS_TENANT_NAME:OS_USERNAME</code>.
50
+            <code>eucarc</code> sources <code>openrc</code> at the beginning
51
+            (which in turn sources <code>stackrc</code> and <code>localrc</code>)
52
+            in order to set credentials to create EC2 credentials in Keystone.
53
+        </div>
54
+        <dl>
55
+
56
+          <dt>EC2_URL</dt>
57
+          <dd>Set the EC2 url for euca2ools.  The endpoint is extracted from the
58
+            service catalog for <code>OS_TENANT_NAME:OS_USERNAME</code>.
59
+            <pre>EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')</pre></dd>
60
+
61
+          <dt>S3_URL</dt>
62
+          <dd>Set the S3 endpoint for euca2ools.  The endpoint is extracted from the
63
+            service catalog for <code>OS_TENANT_NAME:OS_USERNAME</code>.
64
+            <pre>export S3_URL=$(keystone catalog --service s3 | awk '/ publicURL / { print $4 }')</pre></dd>
65
+
66
+          <dt>EC2_ACCESS_KEY, EC2_SECRET_KEY</dt>
67
+          <dd>Create EC2 credentials for the current tenant:user in Keystone.
68
+            <pre>CREDS=$(keystone ec2-credentials-create)
69
+export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
70
+export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')</pre></dd>
71
+
72
+          <dt>Certificates for Bundling</dt>
73
+          <dd>Euca2ools requires certificate files to enable bundle uploading.
74
+            The exercise script <code>exercises/bundle.sh</code> demonstrated
75
+            retrieving certificates using the Nova CLI.
76
+            <pre>EC2_PRIVATE_KEY=pk.pem
77
+EC2_CERT=cert.pem
78
+NOVA_CERT=cacert.pem
79
+EUCALYPTUS_CERT=${NOVA_CERT}</pre></dd>
80
+
81
+        </dl>
82
+      </section
83
+
84
+      <footer>
85
+        <p>&copy; Openstack Foundation 2011-2013 &mdash; An
86
+        <a href="https://wiki.openstack.org/wiki/Programs">OpenStack program</a>
87
+        created by <a href="http://www.rackspace.com/cloud/private_edition/">Rackspace Cloud Builders</a></p>
88
+      </footer>
89
+
90
+    </div> <!-- /container -->
91
+
92
+  </body>
93
+</html>
0 94
new file mode 100644
... ...
@@ -0,0 +1,88 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>DevStack - exerciserc</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+    
21
+    <!-- Le javascripts -->
22
+    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="overview.html">Overview</a></li>
34
+            <li><a href="changes.html">Changes</a></li>
35
+            <li><a href="faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container">
44
+
45
+      <section class="span12">
46
+        <div class="page-header">
47
+          <h2>exerciserc <small>Exercise settings</small></h2>
48
+          <p><code>exerciserc</code> is used to configure settings for the
49
+          exercise scripts.  The values shown below are the default values.
50
+          Thse can all be overridden by setting them in the <code>localrc</code>
51
+          section.</p>
52
+        </div>
53
+        <dl>
54
+
55
+          <dt>ACTIVE_TIMEOUT</dt>
56
+          <dd>Max time to wait while vm goes from build to active state
57
+            <pre>ACTIVE_TIMEOUT==30</pre></dd>
58
+
59
+          <dt>ASSOCIATE_TIMEOUT</dt>
60
+          <dd>Max time to wait for proper IP association and dis-association.
61
+            <pre>ASSOCIATE_TIMEOUT=15</pre></dd>
62
+
63
+          <dt>BOOT_TIMEOUT</dt>
64
+          <dd>Max time till the vm is bootable
65
+            <pre>BOOT_TIMEOUT=30</pre></dd>
66
+
67
+          <dt>RUNNING_TIMEOUT</dt>
68
+          <dd>Max time from run instance command until it is running
69
+            <pre>RUNNING_TIMEOUT=$(($BOOT_TIMEOUT + $ACTIVE_TIMEOUT))</pre></dd>
70
+
71
+          <dt>TERMINATE_TIMEOUT</dt>
72
+          <dd>Max time to wait for a vm to terminate
73
+            <pre>TERMINATE_TIMEOUT=30</pre></dd>
74
+
75
+        </dl>
76
+      </section
77
+
78
+      <footer>
79
+        <p>&copy; Openstack Foundation 2011-2013 &mdash; An
80
+        <a href="https://wiki.openstack.org/wiki/Programs">OpenStack program</a>
81
+        created by <a href="http://www.rackspace.com/cloud/private_edition/">Rackspace Cloud Builders</a></p>
82
+      </footer>
83
+
84
+    </div> <!-- /container -->
85
+
86
+  </body>
87
+</html>
0 88
new file mode 100644
... ...
@@ -0,0 +1,169 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>DevStack - Frequently Asked Questions</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+
21
+    <!-- Le javascripts -->
22
+    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="overview.html">Overview</a></li>
34
+            <li><a href="changes.html">Changes</a></li>
35
+            <li><a href="faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container" id="home">
44
+
45
+      <section id="faq" class="span12">
46
+
47
+        <div class='row pull-left'>
48
+          <h2>FAQ: Using DevStack <small>Making to behave</small></h2>
49
+
50
+          <ul>
51
+            <li><a href="#general">General Questions</a></li>
52
+            <li><a href="#ops_conf">Operation and Configuration</a></li>
53
+            <li><a href="#misc">Miscellaneous</a></li>
54
+          </ul>
55
+
56
+          <h3><a name="general">General Questions</a></h3>
57
+
58
+          <dl class='pull-left'>
59
+            <dt>Q: Can I use DevStack for production?</dt>
60
+            <dd>A: No.  We mean it.  Really.  DevStack makes some implementation choices that are not appropriate for production deployments.  We warned you!</dd>
61
+
62
+            <dt>Q: Then why selinux in enforcing mode?</dt>
63
+            <dd>A: That is the default on current Fedora and RHEL releases.  DevStack has (rightly so) a bad reputation for its security practices; it has always been meant as a development tool first and system integration later.  This is changing as the security issues around OpenStack's use of root (for example) have been tightened and developers need to be better equipped to work in these environments.  <code>stack.sh</code>'s use of root is primarily to support the activities that would be handled by packaging in "real" deployments.  To remove additional protections that will be desired/required in production would be a step backward.</dd>
64
+
65
+            <dt>Q: But selinux is disabled in RHEL 6!</dt>
66
+            <dd>A: Today it is, yes.  That is a specific exception that certain DevStack contributors fought strongly against.  The primary reason it was allowed was to support using RHEL6 as the Python 2.6 test platform and that took priority time-wise.  This will not be the case with RHEL 7.</dd>
67
+
68
+            <dt>Q: Why a shell script, why not chef/puppet/...</dt>
69
+            <dd>A: The script is meant to be read by humans (as well as ran by computers); it is the primary documentation after all.  Using a recipe system requires everyone to agree and understand chef or puppet.</dd>
70
+
71
+            <dt>Q: Why not use Crowbar?</dt>
72
+            <dd>A: DevStack is optimized for documentation &amp; developers.  As some of us use <a href="https://github.com/dellcloudedge/crowbar">Crowbar</a> for production deployments, we hope developers documenting how they setup systems for new features supports projects like Crowbar.</dd>
73
+
74
+            <dt>Q: I'd like to help!</dt>
75
+            <dd>A: That isn't a question, but please do!  The source for DevStack is <a href="http://github.com/openstack-dev/devstack">github</a> and bug reports go to <a href="http://bugs.launchpad.net/devstack/">LaunchPad</a>.  Contributions follow the usual process as described in the <a href="http://wiki.openstack.org/HowToContribute">OpenStack wiki</a> even though DevStack is not an official OpenStack project.  This site is housed in the CloudBuilder's <a href="http://github.com/cloudbuilders/devstack">github</a> in the gh-pages branch.</dd>
76
+
77
+            <dt>Q: Why not use packages?</dt>
78
+            <dd>A: Unlike packages, DevStack leaves your cloud ready to develop - checkouts of the code and services running in screen. However, many people are doing the hard work of packaging and recipes for production deployments.  We hope this script serves as a way to communicate configuration changes between developers and packagers.</dd>
79
+
80
+            <dt>Q: Why isn't $MY_FAVORITE_DISTRO supported?</dt>
81
+            <dd>A: DevStack is meant for developers and those who want to see how OpenStack really works.  DevStack is known to run on the distro/release combinations listed in <code>README.md</code>.  DevStack is only supported on releases other than those documented in <code>README.md</code> on a best-effort basis.</dd>
82
+
83
+            <dt>Q: What about Fedora/RHEL/CentOS?</dt>
84
+            <dd>A: Fedora and CentOS/RHEL are supported via rpm dependency files and specific checks in <code>stack.sh</code>.  Support will follow the pattern set with the Ubuntu testing, i.e. only a single release of the distro will receive regular testing, others will be handled on a best-effort basis.</dd>
85
+
86
+            <dt>Q: Are there any differences between Ubuntu and Fedora support?</dt>
87
+            <dd>A: Neutron is not fully supported prior to Fedora 18 due lack of OpenVSwitch packages.</dd>
88
+
89
+            <dt>Q: How about RHEL 6?</dt>
90
+            <dd>A: RHEL 6 has Python 2.6 and many old modules packaged and is a challenge to support.  There are a number of specific RHEL6 work-arounds in <code>stack.sh</code> to handle this.  But the testing on py26 is valuable so we do it...</dd>
91
+          </dl>
92
+
93
+          <h3><a name="ops_conf">Operation and Configuration</a></h3>
94
+
95
+          <dl class='pull-left'>
96
+            <dt>Q: Can DevStack handle a multi-node installation?</dt>
97
+            <dd>A: Indirectly, yes.  You run DevStack on each node with the appropriate configuration in <code>local.conf</code>.  The primary considerations are turning off the services not required on the secondary nodes, making sure the passwords match and setting the various API URLs to the right place.</dd>
98
+
99
+            <dt>Q: How can I document the environment that DevStack is using?</dt>
100
+            <dd>A: DevStack includes a script (<code>tools/info.sh</code>) that gathers the versions of the relevant installed apt packages, pip packages and git repos.  This is a good way to verify what Python modules are installed.</dd>
101
+
102
+            <dt>Q: How do I turn off a service that is enabled by default?</dt>
103
+            <dd>A: Services can be turned off by adding <code>disable_service xxx</code> to <code>local.conf</code> (using <code>n-vol</code> in this example):
104
+              <pre>disable_service n-vol</pre>
105
+            </dd>
106
+
107
+            <dt>Q: Is enabling a service that defaults to off done with the reverse of the above?</dt>
108
+            <dd>A: Of course!
109
+              <pre>enable_service qpid</pre>
110
+            </dd>
111
+
112
+            <dt>Q: How do I run a specific OpenStack milestone?</dt>
113
+            <dd>A: OpenStack milestones have tags set in the git repo.  Set the appropriate tag in the <code>*_BRANCH</code> variables in <code>local.conf</code>.  Swift is on its own release schedule so pick a tag in the Swift repo that is just before the milestone release.  For example:
114
+              <pre>[[local|localrc]]
115
+GLANCE_BRANCH=stable/grizzly
116
+HORIZON_BRANCH=stable/grizzly
117
+KEYSTONE_BRANCH=stable/grizzly
118
+NOVA_BRANCH=stable/grizzly
119
+GLANCE_BRANCH=stable/grizzly
120
+NEUTRON_BRANCH=stable/grizzly
121
+SWIFT_BRANCH=1.10.0</pre>
122
+            </dd>
123
+<!---  this is incomplete, remove it until populating the sql catalog is complete
124
+            <dt>Q: How do I use the SQL catalog backend in Keystone?</dt>
125
+            <dd>A: Comment out the template backend lines in the <code>[catalog]</code> section of <code>keystone/etc/keystone.conf</code> and add the SQL backend config like this:
126
+              <pre>[catalog]
127
+#driver = keystone.catalog.backends.templated.TemplatedCatalog
128
+#template_file = ./etc/default_catalog.templates
129
+driver = keystone.catalog.backends.sql.Catalog</pre>
130
+            </dd>
131
+-->
132
+            <dt>Q: Why not use <strike><code>tools/pip-requires</code></strike><code>requirements.txt</code> to grab project dependencies?</dt>
133
+            <dd><strike>The majority of deployments will use packages to install OpenStack that will have distro-based packages as dependencies.  DevStack installs as many of these Python packages as possible to mimic the expected production environemnt.</strike> Certain Linux distributions have a 'lack of workaround' in their Python configurations that installs vendor packaged Python modules and pip-installed modules to the SAME DIRECTORY TREE.  This is causing heartache and moving us in the direction of installing more modules from PyPI than vendor packages.  However, that is only being done as necessary as the packaging needs to catch up to the development cycle anyway so this is kept to a minimum.</dd>
134
+
135
+            <dt>Q: What can I do about RabbitMQ not wanting to start on my fresh new VM?</dt>
136
+            <dd>A: This is often caused by <code>erlang</code> not being happy with the hostname resolving to a reachable IP address.  Make sure your hostname resolves to a working IP address; setting it to 127.0.0.1 in <code>/etc/hosts</code> is often good enough for a single-node installation.  And in an extreme case, use <code>clean.sh</code> to eradicate it and try again.</dd>
137
+
138
+            <dt>Q: How can I set up Heat in stand-alone configuration?</dt>
139
+            <dd>A: Configure <code>local.conf</code> thusly:
140
+              <pre>[[local|localrc]]
141
+HEAT_STANDALONE=True
142
+ENABLED_SERVICES=rabbit,mysql,heat,h-api,h-api-cfn,h-api-cw,h-eng
143
+KEYSTONE_SERVICE_HOST=&lt;keystone-host&gt;
144
+KEYSTONE_AUTH_HOST=&lt;keystone-host&gt;</pre>
145
+            </dd>
146
+
147
+            <dt>Q: Why are my configuration changes ignored?</dt>
148
+            <dd>A: You may have run into the package prerequisite installation timeout.  <code>tools/install_prereqs.sh</code> has a timer that skips the package installation checks if it was run within the last <code>PREREQ_RERUN_HOURS</code> hours (default is 2).  To override this, set <code>FORCE_PREREQ=1</code> and the package checks will never be skipped.
149
+            </dd>
150
+          </dl>
151
+
152
+          <h3><a name="misc">Miscellaneous</a></h3>
153
+
154
+          <dl class='pull-left'>
155
+            <dt>Q: <code>tools/fixup_stuff.sh</code> is broken and shouldn't 'fix' just one version of packages.</dt>
156
+            <dd>A: [Another not-a-question]  No it isn't.  Stuff in there is to correct problems in an environment that need to be fixed elsewhere or may/will be fixed in a future release.  In the case of <code>httplib2</code> and <code>prettytable</code> specific problems with specific versions are being worked around.  If later releases have those problems than we'll add them to the script.  Knowing about the broken future releases is valuable rather than polling to see if it has been fixed.</dd>
157
+          </dl>
158
+        </div>
159
+
160
+      </section>
161
+
162
+      <footer>
163
+        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
164
+      </footer>
165
+
166
+    </div> <!-- /container -->
167
+  </body>
168
+</html>
0 169
new file mode 100644
... ...
@@ -0,0 +1,336 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>Multi-Node Lab Server Guide - DevStack</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="../assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="../assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+    
21
+    <!-- Le javascripts -->
22
+    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="../overview.html">Overview</a></li>
34
+            <li><a href="../changes.html">Changes</a></li>
35
+            <li><a href="../faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container">
44
+
45
+      <section id="overview">
46
+        <h1>Multi-Node Lab: Serious Stuff</h1>
47
+        <p>Here is OpenStack in a realistic test configuration with multiple physical servers.</p>
48
+      </section>
49
+
50
+      <section id="prerequisites">
51
+        <div class="page-header">
52
+          <h2>Prerequisites <small>Linux & Network</small></h2>
53
+        </div>
54
+        
55
+        <h3>Minimal Install</h3>
56
+        <p>You need to have a system with a fresh install of Linux.  You can download the <a href="https://help.ubuntu.com/community/Installation/MinimalCD">Minimal CD</a> for Ubuntu releases since DevStack will download &amp; install all the additional dependencies.  The netinstall ISO is available for <a href="http://mirrors.kernel.org/fedora/releases/18/Fedora/x86_64/iso/Fedora-20-x86_64-netinst.iso">Fedora</a> and <a href="http://mirrors.kernel.org/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-netinstall.iso">CentOS/RHEL</a>.</p>
57
+
58
+        <p>Install a couple of packages to bootstrap configuration:</p>
59
+        <pre>apt-get install -y git sudo || yum install -y git sudo</pre>
60
+
61
+        <h3>Network Configuration</h3>
62
+        <p>The first iteration of the lab uses OpenStack's FlatDHCP network controller so
63
+        only a single network will be required.  It should be on its own subnet without DHCP;
64
+        the host IPs and floating IP pool(s) will come out of this block. This example 
65
+        uses the following:</p>
66
+        <ul>
67
+          <li>Gateway: 192.168.42.1</li>
68
+          <li>Physical nodes: 192.168.42.11-192.168.42.99</li>
69
+          <li>Floating IPs: 192.168.42.128-192.168.42.254</li>
70
+        </ul>
71
+        <p>Configure each node with a static IP.
72
+        For Ubuntu edit <code>/etc/network/interfaces</code>:</p>
73
+
74
+        <pre>auto eth0
75
+iface eth0 inet static
76
+    address 192.168.42.11
77
+    netmask 255.255.255.0
78
+    gateway 192.168.42.1
79
+</pre>
80
+        <p>For Fedora and CentOS/RHEL edit
81
+        <code>/etc/sysconfig/network-scripts/ifcfg-eth0</code>:</p>
82
+
83
+        <pre>BOOTPROTO=static
84
+IPADDR=192.168.42.11
85
+NETMASK=255.255.255.0
86
+GATEWAY=192.168.42.1
87
+</pre>
88
+
89
+<!-- save these for the VLAN version
90
+   auto eth0.926
91
+   iface eth0.926 inet static
92
+           address 10.4.144.3
93
+           netmask 255.255.240.0
94
+           #gateway 10.4.144.1
95
+           up ifconfig eth0.926
96
+   
97
+   auto eth0.605
98
+   iface eth0.605 inet static
99
+           address 172.16.103.3
100
+           netmask 255.255.255.0
101
+           #gateway 172.16.103.1
102
+           up ifconfig eth0.605 up
103
+-->
104
+
105
+      </section>
106
+
107
+      <section id="installation">
108
+        <div class="page-header">
109
+          <h2>Installation <small>shake and bake</small></h2>
110
+        </div>
111
+
112
+        <h3>Add the DevStack User</h3>
113
+        <p>OpenStack runs as a non-root user that has sudo access to root.  There is nothing special
114
+        about the name, we'll use <code>stack</code> here. Every node must use the same name and
115
+        preferably uid. If you created a user during the OS install you can use it and give it
116
+        sudo privileges below.  Otherwise create the stack user:</p>
117
+        <pre>groupadd stack
118
+useradd -g stack -s /bin/bash -d /opt/stack -m stack</pre>
119
+        <p>This user will be making many changes to your system during installation and operation
120
+        so it needs to have sudo privileges to root without a password:</p>
121
+        <pre>echo "stack ALL=(ALL) NOPASSWD: ALL" &gt;&gt; /etc/sudoers</pre>
122
+        <p>From here on use the <code>stack</code> user.  <b>Logout</b> and <b>login</b> as the 
123
+        <code>stack</code> user.</p>
124
+
125
+        <h3>Set Up Ssh</h3>
126
+        <p>Set up the stack user on each node with an ssh key for access:</p>
127
+        <pre>mkdir ~/.ssh; chmod 700 ~/.ssh
128
+echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyYjfgyPazTvGpd8OaAvtU2utL8W6gWC4JdRS1J95GhNNfQd657yO6s1AH5KYQWktcE6FO/xNUC2reEXSGC7ezy+sGO1kj9Limv5vrvNHvF1+wts0Cmyx61D2nQw35/Qz8BvpdJANL7VwP/cFI/p3yhvx2lsnjFE3hN8xRB2LtLUopUSVdBwACOVUmH2G+2BWMJDjVINd2DPqRIA4Zhy09KJ3O1Joabr0XpQL0yt/I9x8BVHdAx6l9U0tMg9dj5+tAjZvMAFfye3PJcYwwsfJoFxC8w/SLtqlFX7Ehw++8RtvomvuipLdmWCy+T9hIkl+gHYE4cS3OIqXH7f49jdJf jesse@spacey.local" > ~/.ssh/authorized_keys</pre>
129
+
130
+        <h3>Download DevStack</h3>
131
+        <p>Grab the latest version of DevStack from github:</p>
132
+        <pre>git clone https://github.com/openstack-dev/devstack.git
133
+cd devstack</pre>
134
+
135
+        <p>Up to this point all of the steps apply to each node in the cluster.  From here on
136
+        there are some differences between the cluster controller (aka 'head node') and the
137
+        compute nodes.</p>
138
+
139
+        <h3>Configure Cluster Controller</h3>
140
+        <p>The cluster controller runs all OpenStack services.  Configure the cluster controller's DevStack in <code>local.conf</code>:</p>
141
+        <pre>[[local|localrc]]
142
+HOST_IP=192.168.42.11
143
+FLAT_INTERFACE=eth0
144
+FIXED_RANGE=10.4.128.0/20
145
+FIXED_NETWORK_SIZE=4096
146
+FLOATING_RANGE=192.168.42.128/25
147
+MULTI_HOST=1
148
+LOGFILE=/opt/stack/logs/stack.sh.log
149
+ADMIN_PASSWORD=labstack
150
+MYSQL_PASSWORD=supersecret
151
+RABBIT_PASSWORD=supersecrete
152
+SERVICE_PASSWORD=supersecrete
153
+SERVICE_TOKEN=xyzpdqlazydog</pre>
154
+<!-- save for vlan
155
+FLAT_INTERFACE=eth0.926
156
+-->
157
+
158
+        <p>In the multi-node configuration the first 10 or so IPs in the private subnet are usually reserved.  Add this to <code>local.sh</code> to have it run after every <code>stack.sh</code> run:</p>
159
+        <pre>for i in `seq 2 10`; do /opt/stack/nova/bin/nova-manage fixed reserve 10.4.128.$i; done</pre>
160
+
161
+        <p>Fire up OpenStack:</p>
162
+        <pre>./stack.sh</pre>
163
+        <p>A stream of activity ensues.  When complete you will see a summary of
164
+        <code>stack.sh</code>'s work, including the relevant URLs, accounts and passwords to poke at your
165
+        shiny new OpenStack.  The most recent log file is available in <code>stack.sh.log</code>.</p>
166
+
167
+        <h3>Configure Compute Nodes</h3>
168
+        <p>The compute nodes only run the OpenStack worker services.  For additional machines, create a <code>local.conf</code> with:</p>
169
+        <pre>HOST_IP=192.168.42.12 # change this per compute node
170
+FLAT_INTERFACE=eth0
171
+FIXED_RANGE=10.4.128.0/20
172
+FIXED_NETWORK_SIZE=4096
173
+FLOATING_RANGE=192.168.42.128/25
174
+MULTI_HOST=1
175
+LOGFILE=/opt/stack/logs/stack.sh.log
176
+ADMIN_PASSWORD=labstack
177
+MYSQL_PASSWORD=supersecret
178
+RABBIT_PASSWORD=supersecrete
179
+SERVICE_PASSWORD=supersecrete
180
+SERVICE_TOKEN=xyzpdqlazydog
181
+DATABASE_TYPE=mysql
182
+SERVICE_HOST=192.168.42.11
183
+MYSQL_HOST=192.168.42.11
184
+RABBIT_HOST=192.168.42.11
185
+GLANCE_HOSTPORT=192.168.42.11:9292
186
+ENABLED_SERVICES=n-cpu,n-net,n-api,c-sch,c-api,c-vol
187
+NOVA_VNC_ENABLED=True
188
+NOVNCPROXY_URL="http://192.168.42.11:6080/vnc_auto.html"
189
+VNCSERVER_LISTEN=$HOST_IP
190
+VNCSERVER_PROXYCLIENT_ADDRESS=$VNCSERVER_LISTEN
191
+</pre>
192
+
193
+<!-- save for vlan
194
+FLAT_INTERFACE=eth0.926
195
+-->
196
+
197
+        <p>Fire up OpenStack:</p>
198
+        <pre>./stack.sh</pre>
199
+        <p>A stream of activity ensues.  When complete you will see a summary of
200
+        <code>stack.sh</code>'s work, including the relevant URLs, accounts and passwords to poke at your
201
+        shiny new OpenStack.  The most recent log file is available in <code>stack.sh.log</code>.</p>
202
+
203
+        <h3>Cleaning Up After DevStack</h3>
204
+        <p>Shutting down OpenStack is now as simple as running the included <code>unstack.sh</code> script:</p>
205
+        <pre>./unstack.sh</pre>
206
+
207
+        <p>A more aggressive cleanup can be performed using <code>clean.sh</code>.  It removes certain troublesome packages and attempts to leave the system in a state where changing the database or queue manager can be reliably performed.
208
+        <pre>./clean.sh</pre>
209
+
210
+        <p>Sometimes running instances are not cleaned up.  DevStack attempts to do this when it
211
+        runs but there are times it needs to still be done by hand:</p>
212
+        <pre>sudo rm -rf /etc/libvirt/qemu/inst*
213
+sudo virsh list | grep inst | awk '{print $1}' | xargs -n1 virsh destroy</pre>
214
+
215
+      </section>
216
+
217
+      <section id="options">
218
+        <div class="page-header">
219
+          <h2>Options <small>pimp your stack</small></h2>
220
+        </div>
221
+
222
+        <h3>Additional Users</h3>
223
+        <p>DevStack creates two OpenStack users (<code>admin</code> and <code>demo</code>) and two tenants (also <code>admin</code> and <code>demo</code>).  <code>admin</code> is exactly what it sounds like, a privileged administrative account that is a member of both the <code>admin</code> and <code>demo</code> tenants.  <code>demo</code> is a normal user account that is only a member of the <code>demo</code> tenant.  Creating additional OpenStack users can be done through the dashboard, sometimes it is easier to do them in bulk from a script, especially since they get blown away every time
224
+        <code>stack.sh</code> runs.  The following steps are ripe for scripting:</p>
225
+        <pre># Get admin creds
226
+. openrc admin admin
227
+        
228
+# List existing tenants
229
+keystone tenant-list
230
+
231
+# List existing users
232
+keystone user-list
233
+
234
+# Add a user and tenant
235
+NAME=bob
236
+PASSWORD=BigSecrete
237
+TENANT=$NAME
238
+keystone tenant-create --name=$NAME
239
+keystone user-create --name=$NAME --pass=$PASSWORD
240
+keystone user-role-add --user-id=&lt;bob-user-id&gt; --tenant-id=&lt;bob-tenant-id&gt; --role-id=&lt;member-role-id&gt;
241
+# member-role-id comes from the existing member role created by stack.sh
242
+# keystone role-list</pre>
243
+
244
+        <h3>Swift</h3>
245
+        <p>Swift requires a significant amount of resources and is disabled by default in DevStack.
246
+        The support in DevStack is geared toward a minimal installation but can be used for
247
+        testing.  To implement a true multi-node test of Swift required more than DevStack provides.  
248
+        Enabling it is as simple as enabling the <code>swift</code> service in <code>local.conf</code>:
249
+        <pre>enable_service s-proxy s-object s-container s-account</pre>
250
+
251
+        <p>Swift will put its data files in <code>SWIFT_DATA_DIR</code> (default <code>/opt/stack/data/swift</code>).
252
+        The size of the data 'partition' created (really a loop-mounted file) is set by
253
+        <code>SWIFT_LOOPBACK_DISK_SIZE</code>.  The Swift config files are located in 
254
+        <code>SWIFT_CONFIG_DIR</code> (default <code>/etc/swift</code>).  All of these settings can be overridden in
255
+        (wait for it...) <code>local.conf</code>.</p>
256
+
257
+        <h3>Volumes</h3>
258
+        <p>DevStack will automatically use an existing LVM volume group named <code>stack-volumes</code> 
259
+        to store cloud-created volumes. If <code>stack-volumes</code> doesn't exist, DevStack 
260
+        will set up a 5Gb loop-mounted file to contain it.  This obviously limits the
261
+        number and size of volumes that can be created inside OpenStack.  The size can be
262
+        overridden by setting <code>VOLUME_BACKING_FILE_SIZE</code> in <code>local.conf</code>.</p>
263
+
264
+        <p><code>stack-volumes</code> can be pre-created on any physical volume supported by
265
+        Linux's LVM.  The name of the volume group can be changed by setting <code>VOLUME_GROUP</code>
266
+        in <code>localrc</code>. <code>stack.sh</code> deletes
267
+        all logical volumes in <code>VOLUME_GROUP</code> that begin with 
268
+        <code>VOLUME_NAME_PREFIX</code> as part of cleaning up from previous runs.
269
+        It is recommended to not use the root volume group as <code>VOLUME_GROUP</code>.</p>
270
+
271
+        <p>The details of creating the volume group depends on the server hardware involved 
272
+        but looks something like this:</p>
273
+        <pre>pvcreate /dev/sdc
274
+vgcreate stack-volumes /dev/sdc</pre>
275
+
276
+        <h3>Syslog</h3>
277
+        <p>DevStack is capable of using <code>rsyslog</code> to aggregate logging across the cluster.
278
+        It is off by default; to turn it on set <code>SYSLOG=True</code> in <code>local.conf</code>.
279
+        <code>SYSLOG_HOST</code> defaults to <code>HOST_IP</code>; on the compute nodes it 
280
+        must be set to the IP of the cluster controller to send syslog output there.  In the example
281
+        above, add this to the compute node <code>local.conf</code>:</p>
282
+        <pre>SYSLOG_HOST=192.168.42.11</pre>
283
+
284
+        <h3>Using Alternate Repositories/Branches</h3>
285
+        <p>The git repositories for all of the OpenStack services are defined in <code>stackrc</code>.
286
+        Since this file is a part of the DevStack package changes to it will probably be overwritten
287
+        as updates are applied.  Every setting in <code>stackrc</code> can be redefined in
288
+        <code>local.conf</code>.</p>
289
+
290
+        <p>To change the repository or branch that a particular OpenStack service is created from,
291
+        simply change the value of <code>*_REPO</code> or <code>*_BRANCH</code> corresponding to
292
+        that service.</p>
293
+
294
+        <p>After making changes to the repository or branch, if <code>RECLONE</code> is not set
295
+        in <code>localrc</code> it may be necessary to remove the corresponding directory from
296
+        <code>/opt/stack</code> to force git to re-clone the repository.</p>
297
+
298
+        <p>For example, to pull Nova from a proposed release candidate in the primary Nova 
299
+        repository:</p>
300
+        <pre>NOVA_BRANCH=rc-proposed</pre>
301
+
302
+        <p>To pull Glance from an experimental fork:</p>
303
+        <pre>GLANCE_BRANCH=try-something-big
304
+GLANCE_REPO=https://github.com/mcuser/glance.git</pre>
305
+
306
+      </section>
307
+
308
+      <section id="Notes">
309
+        <div class="page-header">
310
+          <h2>Notes <small>stuff you might need to know</small></h2>
311
+        </div>
312
+
313
+        <h3>Reset the Bridge</h3>
314
+        <p>How to reset the bridge configuration:</p>
315
+        <pre>sudo brctl delif br100 eth0.926
316
+sudo ip link set dev br100 down
317
+sudo brctl delbr br100</pre>
318
+<!--
319
+   sudo rm /etc/libvirt/qemu/*.xml
320
+-->
321
+
322
+        <h3>Set MySQL Password</h3>
323
+        <p>If you forgot to set the root password you can do this:</p>
324
+        <pre>mysqladmin -u root -pnova password 'supersecret'</pre>
325
+
326
+      </section>
327
+
328
+      <footer>
329
+        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
330
+      </footer>
331
+
332
+    </div> <!-- /container -->
333
+
334
+  </body>
335
+</html>
0 336
new file mode 100644
... ...
@@ -0,0 +1,147 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>PXE Boot Server Guide - DevStack</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="../assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="../assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+    
21
+    <!-- Le javascripts -->
22
+    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="../overview.html">Overview</a></li>
34
+            <li><a href="../changes.html">Changes</a></li>
35
+            <li><a href="../faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container">
44
+      <section id="overview">
45
+        <h1>PXE Boot Server Guide: Magic Dust for Network Boot</h1>
46
+        <p>Boot DevStack from a PXE server to a RAM disk.</p>
47
+      </section>
48
+
49
+      <section id="requirements">
50
+        <div class="page-header">
51
+          <h2>Prerequisites <small>Hardware & OpenWRT</small></h2>
52
+        </div>
53
+        
54
+        <h3>Hardware</h3>
55
+        <p>The whole point of this exercise is to have a highly portable boot server, so using a small router with a USB port is the desired platform.  This guide uses a Buffalo WZR-HP-G300NH as an example, but it is easily generalized for other supported platforms. See openwrt.org for more.</p>
56
+        
57
+        <h3>OpenWRT</h3>
58
+        <p>Any recent 'Backfire' build of OpenWRT will work for the boot server project.  We build from trunk and have made the images available at <a href="http://openwrt.xr7.org/openwrt">http://openwrt.xr7.org/openwrt</a>.</p>
59
+      </section>
60
+
61
+      <section id="installation">
62
+        <div class="page-header">
63
+          <h2>Installation <small>bit blasting</small></h2>
64
+        </div>
65
+
66
+        <h3>Install the Image</h3>
67
+        <p>This process follows <a href="http://wiki.openwrt.org/toh/buffalo/wzr-hp-g300h">the OpenWRT doc OEM Install</a> to tftp the new image onto the router.  You need a computer to set up the router, we assume it is a recent Linux or OS/X installation.</p>
68
+        <ul>
69
+          <li>Get openwrt-ar71xx-wzr-hp-g300nh-squashfs-tftp.bin
70
+            <pre>wget http://openwrt.xr7.org/openwrt/ar71xx/openwrt-ar71xx-wzr-hp-g300nh-squashfs-tftp.bin</pre>
71
+          </li>
72
+          <li>Connect computer to LAN port 4 (closest to WAN port)</li>
73
+          <li>Set computer interface to IP address in the 192.168.11.2</li>
74
+          <li>Add static arp entry for router
75
+            <pre>arp -s 192.168.11.1 &lt;mac-address&gt;</pre>
76
+          </li>
77
+          <li>Start TFTP transfer attempt
78
+            <pre>tftp 192.168.11.1
79
+binary
80
+rexmt 1
81
+timeout 60
82
+put openwrt-ar71xx-wzr-hp-g300nh-squashfs-tftp.bin</pre>
83
+          </li>
84
+          <li>Power on router. Router will reboot and initialize on 192.168.1.1.</li>
85
+          <li>Delete static arp entry for router
86
+            <pre>arp -d 192.168.11.1</pre>
87
+          </li>
88
+          <li>Set computer to DHCP, connect and telnet to router and set root password.</li>
89
+        </ul>
90
+
91
+        <h3>Configure the Router</h3>
92
+        <ul>
93
+          <li>Update <code>/etc/opkg.conf</code> to point to our repo:
94
+            <pre>src/gz packages http://192.168.5.13/openwrt/build/ar71xx/packages</pre>
95
+          </li>
96
+          <li>Configure anon mounts:
97
+            <pre>uci delete fstab.@mount[0]
98
+uci commit fstab
99
+/etc/init.d/fstab restart</pre>
100
+          </li>
101
+          <li>Reset the DHCP address range.  DevStack will claim the upper 
102
+            /25 of the router's LAN address space for floating IPs so the
103
+            default DHCP address range needs to be moved:
104
+            <pre>uci set dhcp.lan.start=65
105
+uci set dhcp.lan.limit=60
106
+uci commit dhcp</pre>
107
+          </li>
108
+          <li>Enable TFTP:
109
+            <pre>uci set dhcp.@dnsmasq[0].enable_tftp=1
110
+uci set dhcp.@dnsmasq[0].tftp_root=/mnt/sda1/tftpboot
111
+uci set dhcp.@dnsmasq[0].dhcp_boot=pxelinux.0
112
+uci commit dhcp
113
+/etc/init.d/dnsmasq restart</pre>
114
+          </li>
115
+        </ul>
116
+
117
+        <h3>Set Up tftpboot</h3>
118
+        <ul>
119
+          <li>Create the <code>/tmp/tftpboot</code> structure and populate it:
120
+            <pre>cd ~/devstack
121
+tools/build_pxe_boot.sh /tmp</pre>
122
+            This calls <code>tools/build_ramdisk.sh</code> to create a 2GB ramdisk 
123
+            containing a complete development Oneiric OS plus the 
124
+            OpenStack code checkouts.
125
+          </li>
126
+          <li>Copy <code>tftpboot</code> to a USB drive:
127
+            <pre>mount /dev/sdb1 /mnt/tmp
128
+rsync -a /tmp/tftpboot/ /mnt/tmp/tftpboot/
129
+umount /mnt/tmp</pre>
130
+          </li>
131
+          <li>Plug USB drive into router.  It will be automounted and is ready to serve content.</li>
132
+        </ul>
133
+
134
+        <p>Now <a href="ramdisk.html">return</a> to the RAM disk Guide to kick
135
+           off your DevStack experience.</p>
136
+
137
+      </section>
138
+
139
+      <footer>
140
+        <p>&copy; Openstack Foundation 2011-2013 &mdash; this is not an official OpenStack project...</p>
141
+      </footer>
142
+
143
+    </div> <!-- /container -->
144
+
145
+  </body>
146
+</html>
0 147
new file mode 100644
... ...
@@ -0,0 +1,119 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>RAMdisk Boot Guide - DevStack</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="../assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="../assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+    
21
+    <!-- Le javascripts -->
22
+    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="../overview.html">Overview</a></li>
34
+            <li><a href="../changes.html">Changes</a></li>
35
+            <li><a href="../faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container">
44
+      <section id="overview">
45
+        <h1>Stack-in-a-Box: Try before you mkfs</h1>
46
+        <p>Run DevStack from a RAM disk to give it a whirl before making the 
47
+           commitment to install it.  We'll cover booting from a USB drive or 
48
+           over the network via PXE.  We'll even thow in configuring a home
49
+           router to handle the PXE boot.  You will need a minimum of 3GB 
50
+           for both of these configurations as the RAM disk itself is 2GB.</p>
51
+      </section>
52
+
53
+      <section id="requirements">
54
+        <div class="page-header">
55
+          <h2>Prerequisites <small>Hardware</small></h2>
56
+        </div>
57
+        
58
+        <h3>USB Boot</h3>
59
+        <p><a href="usb-boot.html">This guide</a> covers the creation of a bootable USB drive.  Your 
60
+        computer BIOS must support booting from USB.</p>
61
+        
62
+        <h3>PXE Boot</h3>
63
+        <p><a href="pxe-boot.html">This guide</a> covers the installation of OpenWRT on a home router
64
+        and configuring it as a PXE server, plus the creation of the
65
+        boot images and PXE support files.
66
+      </section>
67
+
68
+      <section id="installation">
69
+        <div class="page-header">
70
+          <h2>Installation <small>bit blasting</small></h2>
71
+        </div>
72
+
73
+        <h3>Install DevStack</h3>
74
+        <p>Grab the latest version of DevStack via https:</p>
75
+		<pre>sudo apt-get install git -y
76
+git clone https://github.com/openstack-dev/devstack.git
77
+cd devstack</pre>
78
+
79
+        <h3>Prepare the Boot RAMdisk</h3>
80
+        <p>Pick your boot method and follow the guide to prepare to build
81
+           the RAM disk and set up the boot process:</p>
82
+        <ul>
83
+          <li><a href="usb-boot.html">USB boot</a></li>
84
+          <li><a href="pxe-boot.html">PXE boot</a></li>
85
+        </ul>
86
+
87
+        <h3>Fire It Up</h3>
88
+        <ul>
89
+          <li>Boot the computer into the RAM disk.  The details will vary from
90
+              machine to machine but most BIOSes have a method to select the
91
+              boot device, often by pressing F12 during POST.</li>
92
+          <li>Select 'DevStack' from the Boot Menu.</li>
93
+          <li>Log in with the 'stack' user and 'pass' password.</li>
94
+          <li>Create <code>devstack/localrc</code> if you wish to change any 
95
+              of the configuration variables.  You will probably want to at 
96
+              least set the admin login password to something memorable rather 
97
+              than the default 20 random characters:
98
+            <pre>ADMIN_PASSWORD=openstack</pre>
99
+          </li>
100
+          <li>Fire up OpenStack!
101
+            <pre>./run.sh</pre>
102
+          </li>
103
+          <li>See the processes running in screen:
104
+            <pre>screen -x</pre>
105
+          </li>
106
+          <li>Connect to the dashboard at <code>http://&lt;ip-address&gt;/</code></li>
107
+        </ul>
108
+
109
+      </section>
110
+
111
+      <footer>
112
+        <p>&copy; Openstack Foundation 2011-2013 &mdash; this is not an official OpenStack project...</p>
113
+      </footer>
114
+
115
+    </div> <!-- /container -->
116
+
117
+  </body>
118
+</html>
0 119
new file mode 100644
... ...
@@ -0,0 +1,131 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>Single Machine Guide - DevStack</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="../assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="../assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+    
21
+    <!-- Le javascripts -->
22
+    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="../overview.html">Overview</a></li>
34
+            <li><a href="../changes.html">Changes</a></li>
35
+            <li><a href="../faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container">
44
+      <section id="overview">
45
+        <h1>All-In-One: Dedicated Hardware</h1>
46
+        <p>Things are about to get real!  Using OpenStack in containers or VMs is nice for kicking the tires, but doesn't compare to the feeling you get with hardware.</p>
47
+      </section>
48
+
49
+      <section id="prerequisites">
50
+        <div class="page-header">
51
+          <h2>Prerequisites <small>Linux & Network</small></h2>
52
+        </div>
53
+        
54
+        <h3>Minimal Install</h3>
55
+        <p>You need to have a system with a fresh install of Linux.  You can download the <a href="https://help.ubuntu.com/community/Installation/MinimalCD">Minimal CD</a> for Ubuntu releases since DevStack will download &amp; install all the additional dependencies.  The netinstall ISO is available for <a href="http://mirrors.kernel.org/fedora/releases/18/Fedora/x86_64/iso/Fedora-20-x86_64-netinst.iso">Fedora</a> and <a href="http://mirrors.kernel.org/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-netinstall.iso">CentOS/RHEL</a>.  You may be tempted to use a desktop distro on a laptop, it will probably work but you may need to tell Network Manager to keep its fingers off the interface(s) that OpenStack uses for bridging.</p>
56
+        
57
+        <h3>Network Configuration</h3>
58
+        <p>Determine the network configuration on the interface used to integrate your 
59
+        OpenStack cloud with your existing network. For example, if the IPs given out on your network 
60
+        by DHCP are 192.168.1.X - where X is between 100 and 200 you will be able to use IPs 
61
+        201-254 for <b>floating ips</b>.</p>
62
+        <p>To make things easier later change your host to use a static IP instead of DHCP (i.e. 192.168.1.201).</p>
63
+      </section>
64
+
65
+      <section id="installation">
66
+        <div class="page-header">
67
+          <h2>Installation <small>shake and bake</small></h2>
68
+        </div>
69
+
70
+        <h3>Add your user</h3>
71
+        <p>We need to add a user to install DevStack.  (if you created a user during install you can skip this step and just give the user sudo privileges below)</p>
72
+        <pre>adduser stack</pre>
73
+        <p>Since this user will be making many changes to your system, it will need to have sudo privileges:</p>
74
+        <pre>apt-get install sudo -y || yum install -y sudo
75
+echo "stack ALL=(ALL) NOPASSWD: ALL" &gt;&gt; /etc/sudoers</pre>
76
+        <p>From here on you should use the user you created.  <b>Logout</b> and <b>login</b> as that user.</p>
77
+
78
+        <h3>Download DevStack</h3>
79
+        <p>We'll grab the latest version of DevStack via https:</p>
80
+        <pre>sudo apt-get install git -y || yum install -y git
81
+git clone https://github.com/openstack-dev/devstack.git
82
+cd devstack</pre>
83
+
84
+        <h3>Run DevStack</h3>
85
+        <p>Now to configure <code>stack.sh</code>.  DevStack includes a sample in <code>devstack/samples/local.conf</code>.  Create <code>local.conf</code> as shown below to do the following:</p>
86
+        <ul>
87
+          <li>Set <code>FLOATING_RANGE</code> to a range not used on the local network, i.e. 192.168.1.224/27.  This configures IP addresses ending in 225-254 to be used as floating IPs.</li>
88
+          <li>Set <code>FIXED_RANGE</code> and <code>FIXED_NETWORK_SIZE</code> to configure the internal address space used by the instances.</li>
89
+          <li>Set <code>FLAT_INTERFACE</code> to the Ethernet interface that connects the host to your local network.  This is the interface that should be configured with the static IP address mentioned above.</li>
90
+          <li>Set the administrative password.  This password is used for the <b>admin</b> and <b>demo</b> accounts set up as OpenStack users.</li>
91
+          <li>Set the MySQL administrative password.  The default here is a random hex string which is inconvenient if you need to look at the database directly for anything.</li>
92
+          <li>Set the RabbitMQ password.</li>
93
+          <li>Set the service password.  This is used by the OpenStack services (Nova, Glance, etc) to authenticate with Keystone.</li>
94
+        </ul>
95
+        <p><code>local.conf</code> should look something like this:</p>
96
+        <pre>[[local|localrc]]
97
+FLOATING_RANGE=192.168.1.224/27
98
+FIXED_RANGE=10.11.12.0/24
99
+FIXED_NETWORK_SIZE=256
100
+FLAT_INTERFACE=eth0
101
+ADMIN_PASSWORD=supersecret
102
+MYSQL_PASSWORD=iheartdatabases
103
+RABBIT_PASSWORD=flopsymopsy
104
+SERVICE_PASSWORD=iheartksl</pre>
105
+
106
+        <p>Run DevStack:</p>
107
+        <pre>./stack.sh</pre>
108
+        <p>A seemingly endless stream of activity ensues.  When complete you will see a summary of
109
+        <code>stack.sh</code>'s work, including the relevant URLs, accounts and passwords to poke at your
110
+        shiny new OpenStack.</p>
111
+
112
+        <h3>Using OpenStack</h3>
113
+        <p>At this point you should be able to access the dashboard from other computers on the 
114
+        local network.  In this example that would be http://192.168.1.201/ for the dashboard (aka Horizon).
115
+        Launch VMs and if you give them floating IPs and security group access those VMs will be accessible from other machines on your network.</p>
116
+
117
+        <p>Some examples of using the OpenStack command-line clients <code>nova</code> and <code>glance</code>
118
+        are in the shakedown scripts in <code>devstack/exercises</code>.  <code>exercise.sh</code>
119
+        will run all of those scripts and report on the results.</p>
120
+
121
+      </section>
122
+
123
+      <footer>
124
+        <p>&copy; Openstack Foundation 2011-2013 &mdash; An <a href="https://wiki.openstack.org/wiki/Programs">OpenStack program</a> created by <a href="http://www.rackspace.com/cloud/private_edition/">Rackspace Cloud Builders</a></p>
125
+      </footer>
126
+
127
+    </div> <!-- /container -->
128
+
129
+  </body>
130
+</html>
0 131
new file mode 100644
... ...
@@ -0,0 +1,137 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>Single Machine Guide - DevStack</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="../assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="../assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+    
21
+    <!-- Le javascripts -->
22
+    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="../overview.html">Overview</a></li>
34
+            <li><a href="../changes.html">Changes</a></li>
35
+            <li><a href="../faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container">
44
+      <section id="overview">
45
+        <h1>Running a Cloud in a VM</h1>
46
+        <p>Use the cloud to build the cloud! Use your cloud to launch new versions of OpenStack 
47
+        in about 5 minutes.  When you break it, start over!  The VMs launched in the cloud will 
48
+        be slow as they are running in QEMU (emulation), but their primary use is testing
49
+        OpenStack development and operation.  Speed not required.</p>
50
+      </section>
51
+
52
+      <section id="prerequisites">
53
+        <div class="page-header">
54
+          <h2>Prerequisites <small>Cloud & Image</small></h2>
55
+        </div>
56
+
57
+        <h3>Virtual Machine</h3>
58
+        <p>DevStack should run in any virtual machine running a supported Linux release.  It will perform best with 2Gb or more of RAM.</p>
59
+
60
+        <h3>OpenStack Deployment &amp; cloud-init</h3>
61
+        <p>If the cloud service has an image with <code>cloud-init</code> pre-installed, use it.  You can
62
+        get one from <a href="http://uec-images.ubuntu.com">Ubuntu's Daily Build</a>
63
+        site if necessary.  This will enable you to launch VMs with userdata that installs 
64
+        everything at boot time.  The userdata script below will install and run
65
+        DevStack with a minimal configuration.  The use of <code>cloud-init</code>
66
+        is outside the scope of this document, refer to <a href"http://cloudinit.readthedocs.org/en/latest/index.html">the
67
+        <code>cloud-init</code> docs</a> for more information.</p>
68
+
69
+        <p>If you are directly using a hypervisor like Xen, kvm or VirtualBox you can manually kick off
70
+        the script below as a non-root user in a bare-bones server installation.</p>
71
+      </section>
72
+
73
+      <section id="requirements">
74
+        <div class="page-header">
75
+          <h2>Installation <small>shake and bake</small></h2>
76
+        </div>
77
+
78
+        <h3>Launching With Cloud-Init</h3>
79
+        <p>This cloud config grabs the latest version of DevStack via git, creates a minimal 
80
+        <code>local.conf</code> file and kicks off <code>stack.sh</code>.  It should
81
+        be passed as the user-data file when booting the VM.</p>
82
+        <pre>#cloud-config
83
+
84
+users:
85
+  - default
86
+  - name: stack
87
+    lock_passwd: False
88
+    sudo: ["ALL=(ALL) NOPASSWD:ALL\nDefaults:stack !requiretty"]
89
+    shell: /bin/bash
90
+
91
+write_files:
92
+  - content: |
93
+        #!/bin/sh
94
+        DEBIAN_FRONTEND=noninteractive sudo apt-get -qqy update || sudo yum update -qy
95
+        DEBIAN_FRONTEND=noninteractive sudo apt-get install -qqy git || sudo yum install -qy git
96
+        sudo chown stack:stack /home/stack
97
+        cd /home/stack
98
+        git clone https://github.com/openstack-dev/devstack.git
99
+        cd devstack
100
+        echo '[[local|localrc]]' > local.conf
101
+        echo ADMIN_PASSWORD=password >> local.conf
102
+        echo MYSQL_PASSWORD=password >> local.conf
103
+        echo RABBIT_PASSWORD=password >> local.conf
104
+        echo SERVICE_PASSWORD=password >> local.conf
105
+        echo SERVICE_TOKEN=tokentoken >> local.conf
106
+        ./stack.sh
107
+    path: /home/stack/start.sh
108
+    permissions: 0755
109
+
110
+runcmd:
111
+  - su -l stack ./start.sh</pre>
112
+        <p>As DevStack will refuse to run as root, this configures <code>cloud-init</code>
113
+        to create a non-root user and run the <code>start.sh</code> script as that user.</p>
114
+
115
+        <h3>Launching By Hand</h3>
116
+        <p>Using a hypervisor directly, launch the VM and either manually perform the steps in the 
117
+        embedded shell script above or copy it into the VM.</p>
118
+
119
+        <h3>Using OpenStack</h3>
120
+        <p>At this point you should be able to access the dashboard.  Launch VMs and if you give them floating IPs access those VMs from other machines on your network.</p>
121
+
122
+        <p>One interesting use case is for developers working on a VM on their laptop.  Once
123
+        <code>stack.sh</code> has completed once, all of the pre-requisite packages are installed
124
+        in the VM and the source trees checked out.  Setting <code>OFFLINE=True</code> in
125
+        <code>local.conf</code> enables <code>stack.sh</code> to run multiple times without an Internet
126
+        connection.  DevStack, making hacking at the lake possible since 2012!</p>
127
+      </section>
128
+
129
+      <footer>
130
+        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
131
+      </footer>
132
+
133
+    </div> <!-- /container -->
134
+
135
+  </body>
136
+</html>
0 137
new file mode 100644
... ...
@@ -0,0 +1,99 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>USB Boot Server Guide - DevStack</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="../assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="../assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+    
21
+    <!-- Le javascripts -->
22
+    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="../overview.html">Overview</a></li>
34
+            <li><a href="../changes.html">Changes</a></li>
35
+            <li><a href="../faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container">
44
+      <section id="overview">
45
+        <h1>USB Boot: Undoable Stack Boot</h1>
46
+        <p>Boot DevStack from a USB disk into a RAM disk.</p>
47
+      </section>
48
+
49
+      <section id="requirements">
50
+        <div class="page-header">
51
+          <h2>Prerequisites</h2>
52
+        </div>
53
+        
54
+        <h3>Hardware</h3>
55
+        <p>This guide covers the creation of a bootable USB drive.  Your 
56
+           computer BIOS must support booting from USB and You will want at least 3GB of 
57
+           RAM.  You also will need a USB drive of at least 2GB.</p>
58
+
59
+        <h3>Software</h3>
60
+        <p>Ubuntu 11.10 (Oneiric Ocelot) is required on host to create images.</p>
61
+      </section>
62
+
63
+      <section id="installation">
64
+        <div class="page-header">
65
+          <h2>Installation <small>bit blasting</small></h2>
66
+        </div>
67
+
68
+        <h3>Set Up USB Drive</h3>
69
+        <ul>
70
+          <li>Insert the USB drive into the computer.  Make a note of the device name, such as 
71
+          <code>sdb</code>. Do not mount the device.</li>
72
+          <li>Install the boot system:
73
+            <pre>tools/build_usb_boot.sh /dev/sdb1</pre>
74
+            <p>This calls tools/build_ramdisk.sh to create a 2GB ramdisk 
75
+               containing a complete development Oneiric OS plus the 
76
+               OpenStack code checkouts.  It then writes a syslinux boot sector
77
+               to the specified device and creates <code>/syslinux</code>.</p>
78
+          </li>
79
+          <li>If desired, you may now mount the device:
80
+            <pre>mount /dev/sdb1 /mnt/tmp
81
+# foo
82
+umount /mnt/tmp</pre>
83
+          </li>
84
+        </ul>
85
+
86
+        <p>Now <a href="ramdisk.html">return</a> to the RAM disk Guide to kick
87
+           off your DevStack experience.</p>
88
+
89
+      </section>
90
+
91
+      <footer>
92
+        <p>&copy; Openstack Foundation 2011-2013 &mdash; this is not an official OpenStack project...</p>
93
+      </footer>
94
+
95
+    </div> <!-- /container -->
96
+
97
+  </body>
98
+</html>
0 99
new file mode 100644
... ...
@@ -0,0 +1,562 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>DevStack - Deploying OpenStack for Developers</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+
21
+    <!-- Le javascripts -->
22
+    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="overview.html">Overview</a></li>
34
+            <li><a href="changes.html">Changes</a></li>
35
+            <li><a href="faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container" id="home">
44
+
45
+      <div class="hero-unit">
46
+        <div class="pull-left">
47
+          <h1 id="main_header">DevStack - an OpenStack Community Production</h1>
48
+          <div class="sub_header">
49
+            <p></p>
50
+            <p>A documented shell script to build complete OpenStack development environments. <br /><br />
51
+              An OpenStack program maintained by the developer community.</p>
52
+          </div>
53
+        </div>
54
+        <div class="pull-left">
55
+          <ol id="getting_started">
56
+            <li id="ubuntu">Setup a fresh supported Linux installation.</li>
57
+            <li id="github">
58
+              Clone devstack from devstack.
59
+              <pre>git clone https://github.com/openstack-dev/devstack.git</pre>
60
+            </li>
61
+            <li id="install">
62
+              Deploy your OpenStack Cloud
63
+              <pre>cd devstack &amp;&amp; ./stack.sh</pre>
64
+            </li>
65
+          </ol>
66
+        </div>
67
+        <div class="clear">&nbsp;</div>
68
+      </div>
69
+
70
+
71
+      <section id="quickstart" class="span12">
72
+        <div class="page-header">
73
+          <h2>Quick Start <small>This ain't your first rodeo</small></h2>
74
+        </div>
75
+        <ol>
76
+            <li value="0">
77
+              <h3>Select a Linux Distribution</h3>
78
+              <p>Only Ubuntu 14.04 (Trusty), Fedora 20 and CentOS/RHEL 6.5 are documented here.  OpenStack also runs and is packaged on other flavors of Linux such as OpenSUSE and Debian.</p>
79
+            </li>
80
+            <li>
81
+              <h3>Install Selected OS</h3>
82
+              <p>In order to correctly install all the dependencies, we assume a specific minimal version of the supported distributions to make it as easy as possible.  We recommend using a minimal install of Ubuntu or Fedora server in a VM if this is your first time.</p>
83
+            </li>
84
+            <li>
85
+              <h3>Download DevStack</h3>
86
+              <pre>git clone https://github.com/openstack-dev/devstack.git</pre>
87
+              <p>The <code>devstack</code> repo contains a script that installs OpenStack and templates for configuration files</p>
88
+            </li>
89
+            <li>
90
+              <h3>Configure</h3>
91
+              <p>We recommend at least a <a href="configuration.html">minimal configuration</a> be set up.</p>
92
+            </li>
93
+            <li>
94
+              <h3>Start the install</h3>
95
+              <pre>cd devstack; ./stack.sh</pre>
96
+              <p>It takes a few minutes, we recommend <a href="stack.sh.html">reading the script</a> while it is building.</p>
97
+            </li>
98
+        </ol>
99
+      </section>
100
+
101
+      <section id="guides" class='span12'>
102
+        <div class="page-header">
103
+          <h2>Guides <small>Walk through various setups used by stackers</small></h2>
104
+        </div>
105
+
106
+        <div class='row span8'>
107
+          <h2>OpenStack on VMs</h2>
108
+          <table class='table table-striped table-bordered'>
109
+            <thead>
110
+              <tr>
111
+                <th>Title</th>
112
+                <th>Description</th>
113
+                <th>Link</th>
114
+              </tr>
115
+            </thead>
116
+            <tbody>
117
+              <tr>
118
+                <td>Virtual Machine</td>
119
+                <td>Run OpenStack in a VM.  The VMs launched in your cloud will be slow as they are running in QEMU (emulation), but it is useful if you don't have spare hardware laying around.</td>
120
+                <td><a class="btn btn-small btn-primary table-action" href="guides/single-vm.html">Read &raquo;</a></td>
121
+              </tr>
122
+
123
+<!--
124
+              <tr>
125
+                <td>LXC Containers</td>
126
+                <td>Already running Ubuntu on your machine?  Using containers lets you build even faster.</td>
127
+                <td>Coming soon!</td>
128
+              </tr>
129
+-->
130
+            </tbody>
131
+            <tfoot>
132
+              <td colspan="3">1 Guide</td>
133
+            </tfoot>
134
+          </table>
135
+        </div>
136
+        <div class="wat span3 pull-right">
137
+          <h4>What is this?</h4>
138
+          <p>These guides tell you how to virtualize your OpenStack cloud in virtual machines. This means that you can get started without having to purchase any hardware.</p>
139
+        </div>
140
+
141
+        <div class='row span8'>
142
+          <h2>OpenStack on Hardware</h2>
143
+          <table class='table table-striped table-bordered'>
144
+            <thead>
145
+              <tr>
146
+                <th>Title</th>
147
+                <th>Description</th>
148
+                <th>Link</th>
149
+              </tr>
150
+            </thead>
151
+            <tbody>
152
+              <tr>
153
+                <td>All-In-One</td>
154
+                <td>Run OpenStack on dedicated hardware to get real performance in your VMs.  This can include a server-class machine or a laptop at home.</td>
155
+                <td><a class="btn btn-small btn-primary table-action" href="guides/single-machine.html">Read &raquo;</a></td>
156
+              </tr>
157
+
158
+              <tr>
159
+                <td>Multi-Node + VLANs</td>
160
+                <td>Setup a multi-node cluster with dedicated VLANs for VMs &amp; Management.</td>
161
+                <td><a class="btn btn-small btn-primary table-action" href="guides/multinode-lab.html">Read &raquo;</a></td>
162
+              </tr>
163
+
164
+<!--
165
+              <tr>
166
+                <td>Stack-in-a-Box</td>
167
+                <td>Run OpenStack from a RAM disk to give it a spin without touching your existing OS installation.  Includes PXE and USB boot methods.</td>
168
+                <td><a class="btn btn-small btn-primary table-action" href="guides/ramdisk.html">Read &raquo;</a></td>
169
+              </tr>
170
+-->
171
+            </tbody>
172
+            <tfoot>
173
+              <td colspan="3">2 Guides</td>
174
+            </tfoot>
175
+          </table>
176
+        </div>
177
+        <div class="wat span3 pull-right">
178
+          <h4>What is this?</h4>
179
+          <p>These guides tell you how to deploy a development environment on real hardware. Guides range from running OpenStack on a single laptop to running a multi-node deployment on datacenter hardware.</p>
180
+        </div>
181
+
182
+      </section>
183
+
184
+      <section id="docs" class="span12">
185
+        <div class="page-header">
186
+          <h2>Documentation <small>Help yourself to stack</small></h2>
187
+        </div>
188
+
189
+        <div class='row span5 pull-left'>
190
+          <h2>Overview</h2>
191
+          <p><a href="overview.html">An overview of DevStack goals and priorities</a></p>
192
+          <h2>Configuration</h2>
193
+          <p><a href="configuration.html">Configuring and customizing the stack</a></p>
194
+          <h2>Plugins</h2>
195
+          <p><a href="plugins.html">Extending DevStack with new features</a></p>
196
+        </div>
197
+
198
+        <div class='span5 pull-right'>
199
+          <h2>Recent Changes</h2>
200
+          <p><a href="changes.html">An incomplete summary of recent changes</a></p>
201
+          <h2>FAQ</h2>
202
+          <p><a href="faq.html">The DevStack FAQ</a></p>
203
+          <h2>Contributing</h2>
204
+          <p><a href="contributing.html">Pitching in to make DevStack a better place</a></p>
205
+        </div>
206
+
207
+      </section>
208
+
209
+      <section id="docs" class="span12">
210
+        <div class="page-header">
211
+          <h2>Code <small>A look at the bits that make it all go</small></h2>
212
+        </div>
213
+
214
+        <div class='row span5 pull-left'>
215
+          <h2>Scripts <small>Generated documentation of DevStack scripts.</small></h2>
216
+          <table class='table table-striped table-bordered'>
217
+            <thead>
218
+              <tr>
219
+                <th>Filename</th>
220
+                <th>Link</th>
221
+              </tr>
222
+            </thead>
223
+            <tbody>
224
+              <tr>
225
+                <td>stack.sh</td>
226
+                <td><a href="stack.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
227
+              </tr>
228
+              <tr>
229
+                <td>functions</td>
230
+                <td><a href="functions.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
231
+              </tr>
232
+              <tr>
233
+                <td>functions-common</td>
234
+                <td><a href="functions-common.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
235
+              </tr>
236
+              <tr>
237
+                <td>lib/apache</td>
238
+                <td><a href="lib/apache.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
239
+              </tr>
240
+              <tr>
241
+                <td>lib/baremetal</td>
242
+                <td><a href="lib/baremetal.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
243
+              </tr>
244
+              <tr>
245
+                <td>lib/ceilometer</td>
246
+                <td><a href="lib/ceilometer.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
247
+              </tr>
248
+              <tr>
249
+                <td>lib/cinder</td>
250
+                <td><a href="lib/cinder.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
251
+              </tr>
252
+              <tr>
253
+                <td>lib/config</td>
254
+                <td><a href="lib/config.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
255
+              </tr>
256
+              <tr>
257
+                <td>lib/database</td>
258
+                <td><a href="lib/database.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
259
+              </tr>
260
+              <tr>
261
+                <td>lib/glance</td>
262
+                <td><a href="lib/glance.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
263
+              </tr>
264
+              <tr>
265
+                <td>lib/heat</td>
266
+                <td><a href="lib/heat.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
267
+              </tr>
268
+              <tr>
269
+                <td>lib/horizon</td>
270
+                <td><a href="lib/horizon.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
271
+              </tr>
272
+              <tr>
273
+                <td>lib/infra</td>
274
+                <td><a href="lib/infra.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
275
+              </tr>
276
+              <tr>
277
+                <td>lib/ironic</td>
278
+                <td><a href="lib/ironic.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
279
+              </tr>
280
+              <tr>
281
+                <td>lib/keystone</td>
282
+                <td><a href="lib/keystone.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
283
+              </tr>
284
+              <tr>
285
+                <td>lib/ldap</td>
286
+                <td><a href="lib/ldap.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
287
+              </tr>
288
+              <tr>
289
+                <td>lib/zaqar</td>
290
+                <td><a href="lib/zaqar.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
291
+              </tr>
292
+              <tr>
293
+                <td>lib/neutron</td>
294
+                <td><a href="lib/neutron.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
295
+              </tr>
296
+              <tr>
297
+                <td>lib/nova</td>
298
+                <td><a href="lib/nova.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
299
+              </tr>
300
+              <tr>
301
+                <td>lib/oslo</td>
302
+                <td><a href="lib/oslo.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
303
+              </tr>
304
+              <tr>
305
+                <td>lib/rpc_backend</td>
306
+                <td><a href="lib/rpc_backend.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
307
+              </tr>
308
+              <tr>
309
+                <td>lib/sahara</td>
310
+                <td><a href="lib/sahara.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
311
+              </tr>
312
+              <tr>
313
+                <td>lib/savanna</td>
314
+                <td><a href="lib/savanna.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
315
+              </tr>
316
+              <tr>
317
+                <td>lib/stackforge</td>
318
+                <td><a href="lib/stackforge.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
319
+              </tr>
320
+              <tr>
321
+                <td>lib/swift</td>
322
+                <td><a href="lib/swift.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
323
+              </tr>
324
+              <tr>
325
+                <td>lib/tempest</td>
326
+                <td><a href="lib/tempest.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
327
+              </tr>
328
+              <tr>
329
+                <td>lib/tls</td>
330
+                <td><a href="lib/tls.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
331
+              </tr>
332
+              <tr>
333
+                <td>lib/trove</td>
334
+                <td><a href="lib/trove.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
335
+              </tr>
336
+              <tr>
337
+                <td>unstack.sh</td>
338
+                <td><a href="unstack.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
339
+              </tr>
340
+              <tr>
341
+                <td>clean.sh</td>
342
+                <td><a href="clean.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
343
+              </tr>
344
+              <tr>
345
+                <td>run_tests.sh</td>
346
+                <td><a href="run_tests.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
347
+              </tr>
348
+              <tr>
349
+                <td>extras.d/50-ironic.sh</td>
350
+                <td><a href="extras.d/50-ironic.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
351
+              </tr>
352
+              <tr>
353
+                <td>extras.d/70-zaqar.sh</td>
354
+                <td><a href="extras.d/70-zaqar.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
355
+              </tr>
356
+              <tr>
357
+                <td>extras.d/70-sahara.sh</td>
358
+                <td><a href="extras.d/70-sahara.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
359
+              </tr>
360
+              <tr>
361
+                <td>extras.d/70-savanna.sh</td>
362
+                <td><a href="extras.d/70-savanna.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
363
+              </tr>
364
+              <tr>
365
+                <td>extras.d/70-trove.sh</td>
366
+                <td><a href="extras.d/70-trove.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
367
+              </tr>
368
+              <tr>
369
+                <td>extras.d/80-opendaylight.sh</td>
370
+                <td><a href="extras.d/80-opendaylight.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
371
+              </tr>
372
+              <tr>
373
+                <td>extras.d/80-tempest.sh</td>
374
+                <td><a href="extras.d/80-tempest.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
375
+              </tr>
376
+            </tbody>
377
+          </table>
378
+        </div>
379
+
380
+        <div class='span5 pull-right'>
381
+          <h2>Configuration <small>Setting the table</small></h2>
382
+          <table class='table table-striped table-bordered'>
383
+            <thead>
384
+              <tr>
385
+                <th>Filename</th>
386
+                <th>Link</th>
387
+              </tr>
388
+            </thead>
389
+            <tbody>
390
+              <tr>
391
+                <td>local.conf</td>
392
+                <td><a href="local.conf.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
393
+              </tr>
394
+              <tr>
395
+                <td>stackrc</td>
396
+                <td><a href="stackrc.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
397
+              </tr>
398
+              <tr>
399
+                <td>openrc</td>
400
+                <td><a href="openrc.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
401
+              </tr>
402
+              <tr>
403
+                <td>exerciserc</td>
404
+                <td><a href="exerciserc.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
405
+              </tr>
406
+              <tr>
407
+                <td>eucarc</td>
408
+                <td><a href="eucarc.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
409
+              </tr>
410
+            </tbody>
411
+          </table>
412
+
413
+          <h2>Tools <small>Support scripts</small></h2>
414
+          <table class='table table-striped table-bordered'>
415
+            <thead>
416
+              <tr>
417
+                <th>Filename</th>
418
+                <th>Link</th>
419
+              </tr>
420
+            </thead>
421
+            <tbody>
422
+              <tr>
423
+                <td>tools/info.sh</td>
424
+                <td><a href="tools/info.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
425
+              </tr>
426
+              <tr>
427
+                <td>tools/build_docs.sh</td>
428
+                <td><a href="tools/build_docs.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
429
+              </tr>
430
+              <tr>
431
+                <td>tools/create_userrc.sh</td>
432
+                <td><a href="tools/create_userrc.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
433
+              </tr>
434
+              <tr>
435
+                <td>tools/fixup_stuff.sh</td>
436
+                <td><a href="tools/fixup_stuff.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
437
+              </tr>
438
+              <tr>
439
+                <td>tools/install_prereqs.sh</td>
440
+                <td><a href="tools/install_prereqs.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
441
+              </tr>
442
+              <tr>
443
+                <td>tools/install_pip.sh</td>
444
+                <td><a href="tools/install_pip.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
445
+              </tr>
446
+              <tr>
447
+                <td>tools/upload_image.sh</td>
448
+                <td><a href="tools/upload_image.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
449
+              </tr>
450
+            </tbody>
451
+          </table>
452
+
453
+          <h2>Samples <small>Generated documentation of DevStack sample files.</small></h2>
454
+          <table class='table table-striped table-bordered'>
455
+            <thead>
456
+              <tr>
457
+                <th>Filename</th>
458
+                <th>Link</th>
459
+              </tr>
460
+            </thead>
461
+            <tbody>
462
+              <tr>
463
+                <td>local.sh</td>
464
+                <td><a href="samples/local.sh.html" class="btn btn-small btn-success table-action">Read &raquo;</a></td>
465
+              </tr>
466
+              <tr>
467
+                <td>localrc</td>
468
+                <td><a href="samples/localrc.html" class="btn btn-small btn-success table-action">Read &raquo;</a></td>
469
+              </tr>
470
+            </tbody>
471
+          </table>
472
+
473
+        <div class='row span5 pull-right'>
474
+          <h2>Exercises <small>Generated documentation of DevStack scripts.</small></h2>
475
+          <table class='table table-striped table-bordered'>
476
+            <thead>
477
+              <tr>
478
+                <th>Filename</th>
479
+                <th>Link</th>
480
+              </tr>
481
+            </thead>
482
+            <tbody>
483
+              <tr>
484
+                <td>exercise.sh</td>
485
+                <td><a href="exercise.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
486
+              </tr>
487
+              <tr>
488
+                <td>exercises/aggregates.sh</td>
489
+                <td><a href="exercises/aggregates.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
490
+              </tr>
491
+              <tr>
492
+                <td>exercises/boot_from_volume.sh</td>
493
+                <td><a href="exercises/boot_from_volume.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
494
+              </tr>
495
+              <tr>
496
+                <td>exercises/bundle.sh</td>
497
+                <td><a href="exercises/bundle.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
498
+              </tr>
499
+              <tr>
500
+                <td>exercises/client-args.sh</td>
501
+                <td><a href="exercises/client-args.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
502
+              </tr>
503
+              <tr>
504
+                <td>exercises/client-env.sh</td>
505
+                <td><a href="exercises/client-env.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
506
+              </tr>
507
+              <tr>
508
+                <td>exercises/euca.sh</td>
509
+                <td><a href="exercises/euca.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
510
+              </tr>
511
+              <tr>
512
+                <td>exercises/floating_ips.sh</td>
513
+                <td><a href="exercises/floating_ips.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
514
+              </tr>
515
+              <tr>
516
+                <td>exercises/horizon.sh</td>
517
+                <td><a href="exercises/horizon.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
518
+              </tr>
519
+              <tr>
520
+                <td>exercises/neutron-adv-test.sh</td>
521
+                <td><a href="exercises/neutron-adv-test.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
522
+              </tr>
523
+                <td>exercises/sahara.sh</td>
524
+                <td><a href="exercises/sahara.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
525
+              </tr>
526
+                <td>exercises/savanna.sh</td>
527
+                <td><a href="exercises/savanna.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
528
+              </tr>
529
+              <tr>
530
+                <td>exercises/sec_groups.sh</td>
531
+                <td><a href="exercises/sec_groups.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
532
+              </tr>
533
+              <tr>
534
+                <td>exercises/swift.sh</td>
535
+                <td><a href="exercises/swift.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
536
+              </tr>
537
+                <td>exercises/trove.sh</td>
538
+                <td><a href="exercises/trove.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
539
+              </tr>
540
+              <tr>
541
+                <td>exercises/volumes.sh</td>
542
+                <td><a href="exercises/volumes.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
543
+              </tr>
544
+              <tr>
545
+                <td>exercises/zaqar.sh</td>
546
+                <td><a href="exercises/zaqar.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
547
+              </tr>
548
+            </tbody>
549
+          </table>
550
+
551
+        </div>
552
+
553
+      </section>
554
+
555
+      <footer>
556
+        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
557
+      </footer>
558
+
559
+    </div> <!-- /container -->
560
+  </body>
561
+</html>
0 562
new file mode 100644
... ...
@@ -0,0 +1,64 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>DevStack - local.conf</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+
21
+    <!-- Le javascripts -->
22
+    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="overview.html">Overview</a></li>
34
+            <li><a href="changes.html">Changes</a></li>
35
+            <li><a href="faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container">
44
+
45
+      <section class="span12">
46
+        <div class="page-header">
47
+          <h2>local.conf <small>User settings</small></h2>
48
+          <p><code>local.conf</code> is a user-maintained setings file that is
49
+          sourced in <code>stackrc</code>.  It contains a section that replaces
50
+          the historical <code>localrc</code> file.  See
51
+          <a href="configuration.html">the description of local.conf</a> for
52
+          more details about the mechanics of the file.</p>
53
+        </div>
54
+      </section
55
+
56
+      <footer>
57
+        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
58
+      </footer>
59
+
60
+    </div> <!-- /container -->
61
+
62
+  </body>
63
+</html>
0 64
new file mode 100644
... ...
@@ -0,0 +1,60 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>DevStack - localrc</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+
21
+    <!-- Le javascripts -->
22
+    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="overview.html">Overview</a></li>
34
+            <li><a href="changes.html">Changes</a></li>
35
+            <li><a href="faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container">
44
+
45
+      <section class="span12">
46
+        <div class="page-header">
47
+          <h2>localrc <small>User settings</small></h2>
48
+          <p><code>localrc</code> is the old file used to configure DevStack.  It is deprecated and has been replaced by <a href="local.conf.html"><code>local.conf</code></a>.  DevStack will continue to use <code>localrc</code> if it is present and ignore the <code>localrc</code> section in <code>local.conf.</code>.   Remove <code>localrc</code> to switch to using the new file.</p>
49
+        </div>
50
+      </section
51
+
52
+      <footer>
53
+        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
54
+      </footer>
55
+
56
+    </div> <!-- /container -->
57
+
58
+  </body>
59
+</html>
0 60
new file mode 100644
... ...
@@ -0,0 +1,115 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>DevStack - openrc</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+    
21
+    <!-- Le javascripts -->
22
+    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="overview.html">Overview</a></li>
34
+            <li><a href="changes.html">Changes</a></li>
35
+            <li><a href="faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container">
44
+
45
+      <section class="span12">
46
+        <div class="page-header">
47
+          <h2>openrc <small>User authentication settings</small></h2>
48
+          <p><code>openrc</code> configures login credentials suitable for use
49
+          with the OpenStack command-line tools.  <code>openrc</code> sources
50
+          <code>stackrc</code> at the beginning (which in turn sources
51
+          the <code>localrc</code> setion of <code>local.conf</code>) in
52
+          order to pick up <code>HOST_IP</code>
53
+          and/or <code>SERVICE_HOST</code> to use in the endpoints.
54
+          The values shown below are the default values.</p>
55
+        </div>
56
+        <dl>
57
+
58
+          <dt>OS_TENANT_NAME</dt>
59
+          <dd>The introduction of Keystone to the OpenStack ecosystem has standardized the
60
+            term <em>tenant</em> as the entity that owns resources.  In some places references
61
+            still exist to the original Nova term <em>project</em> for this use.  Also,
62
+            <em>tenant_name</em> is preferred to <em>tenant_id</em>.
63
+            <pre>OS_TENANT_NAME=demo</pre></dd>
64
+
65
+          <dt>OS_USERNAME</dt>
66
+          <dd>In addition to the owning entity (tenant), Nova stores the entity performing
67
+            the action as the <em>user</em>.
68
+            <pre>OS_USERNAME=demo</pre></dd>
69
+
70
+          <dt>OS_PASSWORD</dt>
71
+          <dd>With Keystone you pass the keystone password instead of an api key.
72
+            Recent versions of novaclient use OS_PASSWORD instead of NOVA_API_KEYs
73
+            or NOVA_PASSWORD.
74
+            <pre>OS_PASSWORD=secrete</pre></dd>
75
+
76
+          <dt>HOST_IP, SERVICE_HOST</dt>
77
+          <dd>Set API endpoint host using <code>HOST_IP</code>.  <code>SERVICE_HOST</code>
78
+            may also be used to specify the endpoint, which is convenient for
79
+            some <code>localrc</code> configurations.  Typically, <code>HOST_IP</code>
80
+            is set in the <code>localrc</code> section.
81
+            <pre>HOST_IP=127.0.0.1
82
+SERVICE_HOST=$HOST_IP</pre></dd>
83
+
84
+          <dt>OS_AUTH_URL</dt>
85
+          <dd>Authenticating against an OpenStack cloud using Keystone returns a <em>Token</em>
86
+            and <em>Service Catalog</em>.  The catalog contains the endpoints for all services
87
+            the user/tenant has access to - including Nova, Glance, Keystone and Swift.
88
+            <pre>OS_AUTH_URL=http://$SERVICE_HOST:5000/v2.0</pre></dd>
89
+
90
+          <dt>GLANCE_HOST</dt>
91
+          <dd>Some exercises call Glance directly.  On a single-node installation, Glance
92
+            should be listening on <code>HOST_IP</code>.  If its running elsewhere
93
+            it can be set here.
94
+            <pre>GLANCE_HOST=$HOST_IP</pre></dd>
95
+
96
+          <dt>KEYSTONECLIENT_DEBUG, NOVACLIENT_DEBUG</dt>
97
+          <dd>Set command-line client log level to <code>DEBUG</code>.  These are
98
+            commented out by default.
99
+            <pre># export KEYSTONECLIENT_DEBUG=1
100
+# export NOVACLIENT_DEBUG=1</pre></dd>
101
+
102
+        </dl>
103
+      </section
104
+
105
+      <footer>
106
+        <p>&copy; Openstack Foundation 2011-2013 &mdash; An
107
+        <a href="https://wiki.openstack.org/wiki/Programs">OpenStack program</a>
108
+        created by <a href="http://www.rackspace.com/cloud/private_edition/">Rackspace Cloud Builders</a></p>
109
+      </footer>
110
+
111
+    </div> <!-- /container -->
112
+
113
+  </body>
114
+</html>
0 115
new file mode 100644
... ...
@@ -0,0 +1,118 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>DevStack - Overview</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+    
21
+    <!-- Le javascripts -->
22
+    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="overview.html">Overview</a></li>
34
+            <li><a href="changes.html">Changes</a></li>
35
+            <li><a href="faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container" id="home">
44
+      
45
+      <section id="overview" class="span12">
46
+
47
+        <div class='row pull-left'>
48
+          <h2>Overview <small>DevStack from a cloud-height view</small></h2>
49
+          <p>DevStack has evolved to support a large number of configuration options and alternative platforms and support services.  That evolution has grown well beyond what was originally intended and the majority of configuration combinations are rarely, if ever, tested.  DevStack is not a general OpenStack installer and was never meant to be everything to everyone..</p>
50
+          <p>Below is a list of what is specifically is supported (read that as "tested") going forward.</p>
51
+
52
+          <h2>Supported Components</h2>
53
+
54
+          <h3>Base OS</h3>
55
+          <p><em>The OpenStack Technical Committee (TC) has defined the current CI strategy to include the latest Ubuntu release and the latest RHEL release (for Python 2.6 testing).</em></p>
56
+          <ul>
57
+            <li>Ubuntu: current LTS release plus current development release</li>
58
+            <li>Fedora: current release plus previous release</li>
59
+            <li>RHEL: current major release</li>
60
+            <li>Other OS platforms may continue to be included but the maintenance of those platforms shall not be assumed simply due to their presence.  Having a listed point-of-contact for each additional OS will greatly increase its chance of being well-maintained.</li>
61
+            <li>Patches for Ubuntu and/or Fedora will not be held up due to side-effects on other OS platforms.</li>
62
+          </ul>
63
+
64
+          <h3>Databases</h3>
65
+          <p><em>As packaged by the host OS</em></p>
66
+          <ul>
67
+            <li>MySQL</li>
68
+            <li>PostgreSQL</li>
69
+          </ul>
70
+
71
+          <h3>Queues</h3>
72
+          <p><em>As packaged by the host OS</em></p>
73
+          <ul>
74
+            <li>Rabbit</li>
75
+            <li>Qpid</li>
76
+<!--
77
+            <li>ZeroMQ</li>
78
+-->
79
+          </ul>
80
+
81
+          <h3>Web Server</h3>
82
+          <p><em>As packaged by the host OS</em></p>
83
+          <ul>
84
+            <li>Apache</li>
85
+          </ul>
86
+
87
+          <h3>OpenStack Network</h3>
88
+          <p><em>Default to Nova Network, optionally use Neutron</em></p>
89
+          <ul>
90
+            <li>Nova Network: FlatDHCP</li>
91
+            <li>Neutron: A basic configuration approximating the original FlatDHCP mode using linuxbridge or OpenVSwitch.</li>
92
+          </ul>
93
+
94
+          <h3>Services</h3>
95
+          <p>The default services configured by DevStack are Identity (Keystone), Object Storage (Swift), Image Storage (Glance), Block Storage (Cinder), Compute (Nova), Network (Nova), Dashboard (Horizon), Orchestration (Heat)</p>
96
+          <p>Additional services not included directly in DevStack can be tied in to <code>stack.sh</code> using the <a href="plugins.html">plugin mechanism</a> to call scripts that perform the configuration and startup of the service.</p>
97
+
98
+          <h3>Node Configurations</h3>
99
+          <ul>
100
+            <li>single node</li>
101
+            <li>multi-node is not tested regularly by the core team, and even then only minimal configurations are reviewed</li>
102
+          </ul>
103
+
104
+          <h3>Exercises</h3>
105
+          <p>The DevStack exercise scripts are no longer used as integration and gate testing as that job has transitioned to Tempest.  They are still maintained as a demonstrations of using OpenStack from the command line and for quick operational testing.</p>
106
+
107
+        </div>        
108
+
109
+      </section>
110
+
111
+      <footer>
112
+        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
113
+      </footer>
114
+
115
+    </div> <!-- /container -->
116
+  </body>
117
+</html>
0 118
new file mode 100644
... ...
@@ -0,0 +1,142 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>DevStack - Plugins</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+    
21
+    <!-- Le javascripts -->
22
+    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="overview.html">Overview</a></li>
34
+            <li><a href="changes.html">Changes</a></li>
35
+            <li><a href="faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container" id="home">
44
+      
45
+      <section id="faq" class="span12">
46
+
47
+        <div class='row pull-left'>
48
+          <h2>Plugins <small>Add stuff</small></h2>
49
+          <p>DevStack has a couple of plugin mechanisms to allow easily adding support for additional projects and features.</p>
50
+
51
+          <h3>Extras.d Hooks</h3>
52
+          <p>These relatively new hooks are an extension of the existing calls from <code>stack.sh</code> at the end of its run, plus <code>unstack.sh</code> and <code>clean.sh</code>.  A number of the higher-layer projects are implemented in DevStack using this mechanism.</p>
53
+
54
+          <p>The script in <code>extras.d</code> is expected to be mostly a dispatcher to functions in a <code>lib/*</code> script.  The scripts are named with a zero-padded two digits sequence number prefix to control the order that the scripts are called, and with a suffix of <code>.sh</code>.  DevSack reserves for itself the sequence numbers 00 through 09 and 90 through 99.</p>
55
+
56
+          <p>Below is a template that shows handlers for the possible command-line arguments:</p>
57
+
58
+<pre>
59
+# template.sh - DevStack extras.d dispatch script template
60
+
61
+# check for service enabled
62
+if is_service_enabled template; then
63
+
64
+    if [[ "$1" == "source" ]]; then
65
+        # Initial source of lib script
66
+        source $TOP_DIR/lib/template
67
+    fi
68
+
69
+    if [[ "$1" == "stack" && "$2" == "pre-install" ]]; then
70
+        # Set up system services
71
+        echo_summary "Configuring system services Template"
72
+        install_package cowsay
73
+
74
+    elif [[ "$1" == "stack" && "$2" == "install" ]]; then
75
+        # Perform installation of service source
76
+        echo_summary "Installing Template"
77
+        install_template
78
+
79
+    elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
80
+        # Configure after the other layer 1 and 2 services have been configured
81
+        echo_summary "Configuring Template"
82
+        configure_template
83
+
84
+    elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
85
+        # Initialize and start the template service
86
+        echo_summary "Initializing Template"
87
+        ##init_template
88
+    fi
89
+
90
+    if [[ "$1" == "unstack" ]]; then
91
+        # Shut down template services
92
+        # no-op
93
+        :
94
+    fi
95
+
96
+    if [[ "$1" == "clean" ]]; then
97
+        # Remove state and transient data
98
+        # Remember clean.sh first calls unstack.sh
99
+        # no-op
100
+        :
101
+    fi
102
+fi
103
+</pre>
104
+
105
+          <p>The arguments are:
106
+          <ul>
107
+            <li><strong>source</strong> - Called by each script that utilizes <code>extras.d</code> hooks; this replaces directly sourcing the <code>lib/*</code> script.</li>
108
+            <li><strong>stack</strong> - Called by <code>stack.sh</code> three times for different phases of its run:
109
+              <ul>
110
+                <li><strong>pre-install</strong> - Called after system (OS) setup is complete and before project source is installed.</li>
111
+                <li><strong>install</strong> - Called after the layer 1 and 2 projects source and their dependencies have been installed.</li>
112
+                <li><strong>post-config</strong> - Called after the layer 1 and 2 services have been configured.  All configuration files for enabled services should exist at this point.</li>
113
+                <li><strong>extra</strong> - Called near the end after layer 1 and 2 services have been started.  This is the existing hook and has not otherwise changed.</li>
114
+              </ul></li>
115
+            <li><strong>unstack</strong> - Called by <code>unstack.sh</code> before other services are shut down.</li>
116
+            <li><strong>clean</strong> - Called by <code>clean.sh</code> before other services are cleaned, but after <code>unstack.sh</code> has been called.
117
+          </ul></p>
118
+
119
+
120
+          <h3>Hypervisor</h3>
121
+          <p>Hypervisor plugins are fairly new and condense most hypervisor configuration into one place.</p>
122
+
123
+          <p>The initial plugin implemented was for Docker support and is a useful template for the required support.  Plugins are placed in <code>lib/nova_plugins</code> and named <code>hypervisor-&lt;name&gt;</code> where <code>&lt;name&gt;</code> is the value of <code>VIRT_DRIVER</code>.  Plugins must define the following functions:</p>
124
+            <ul>
125
+              <li><code>install_nova_hypervisor</code> - install any external requirements</li>
126
+              <li><code>configure_nova_hypervisor</code> - make configuration changes, including those to other services</li>
127
+              <li><code>start_nova_hypervisor</code> - start any external services</li>
128
+              <li><code>stop_nova_hypervisor</code> - stop any external services</li>
129
+              <li><code>cleanup_nova_hypervisor</code> - remove transient data and cache</li>
130
+            </ul>
131
+        </div>        
132
+
133
+      </section>
134
+
135
+      <footer>
136
+        <p>&copy; Openstack Foundation 2011-2013 &mdash; An <a href="https://wiki.openstack.org/wiki/Programs">OpenStack program</a> created by <a href="http://www.rackspace.com/cloud/private_edition/">Rackspace Cloud Builders</a></p>
137
+      </footer>
138
+
139
+    </div> <!-- /container -->
140
+  </body>
141
+</html>
0 142
new file mode 100644
... ...
@@ -0,0 +1,101 @@
0
+<!DOCTYPE html>
1
+<html lang="en">
2
+  <head>
3
+    <meta charset="utf-8">
4
+    <title>DevStack - stackrc</title>
5
+    <meta name="description" content="">
6
+    <meta name="author" content="">
7
+
8
+    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
9
+    <!--[if lt IE 9]>
10
+      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
11
+    <![endif]-->
12
+
13
+    <!-- Le styles -->
14
+    <link href="assets/css/bootstrap.css" rel="stylesheet">
15
+    <link href="assets/css/local.css" rel="stylesheet">
16
+    <style type="text/css">
17
+      body { padding-top: 60px; }
18
+      dd { padding: 10px; }
19
+    </style>
20
+    
21
+    <!-- Le javascripts -->
22
+    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
23
+    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
24
+  </head>
25
+
26
+  <body>
27
+
28
+    <div class="navbar navbar-fixed-top">
29
+      <div class="navbar-inner">
30
+        <div class="container">
31
+          <a class="brand" href="/">DevStack</a>
32
+          <ul class="nav pull-right">
33
+            <li><a href="overview.html">Overview</a></li>
34
+            <li><a href="changes.html">Changes</a></li>
35
+            <li><a href="faq.html">FAQ</a></li>
36
+            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
37
+            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
38
+          </ul>
39
+        </div>
40
+      </div>
41
+    </div>
42
+
43
+    <div class="container">
44
+
45
+      <section class="span12">
46
+        <div class="page-header">
47
+          <h2>stackrc <small>DevStack settings</small></h2>
48
+          <p><code>stackrc</code> is the primary configuration file for DevStack.
49
+          It contains all of the settings that control the services started
50
+          and the repositories used to download the source for those services.
51
+          <code>stackrc</code> sources the <code>localrc</code> section of
52
+          <code>local.conf</code> to perform the default overrides.</p>
53
+        </div>
54
+        <dl>
55
+
56
+          <dt>DATABASE_TYPE</dt>
57
+          <dd>Select the database backend to use.  The default is <code>mysql</code>,
58
+          <code>postgresql</code> is also available.</dd>
59
+
60
+          <dt>ENABLED_SERVICES</dt>
61
+          <dd>Specify which services to launch.  These generally correspond to
62
+            screen tabs. 
63
+            The default includes: Glance (API and Registry), Keystone, Nova (API,
64
+            Certificate, Object Store, Compute, Network, Scheduler, VNC proxies,
65
+            Certificate Authentication), Cinder (Scheduler, API, Volume), Horizon, MySQL, RabbitMQ, Tempest.
66
+            <pre>ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,cinder,c-sch,c-api,c-vol,n-sch,n-novnc,n-xvnc,n-cauth,horizon,rabbit,tempest,$DATABASE_TYPE</pre>
67
+            Other services that are not enabled by default can be enabled in
68
+            <code>localrc</code>. For example, to add Swift, use the following service names:
69
+            <pre>enable_service s-proxy s-object s-container s-account</pre>
70
+            A service can similarly be disabled:
71
+            <pre>disable_service horizon</pre></dd>
72
+
73
+          <dt>Service Repos</dt>
74
+          <dd>The Git repositories used to check out the source for each service
75
+            are controlled by a pair of variables set for each service.  
76
+            <code>*_REPO</code> points to the repository and <code>*_BRANCH</code>
77
+            selects which branch to check out.  These may be overridden in
78
+            <code>local.conf</code> to pull source from a different repo for testing,
79
+            such as a Gerrit branch proposal.  <code>GIT_BASE</code> points to the primary repository server.
80
+            <pre>NOVA_REPO=$GIT_BASE/openstack/nova.git
81
+NOVA_BRANCH=master</pre>
82
+            To pull a branch directly from Gerrit, get the repo and branch from the 
83
+            Gerrit review page:
84
+            <pre>git fetch https://review.openstack.org/p/openstack/nova refs/changes/50/5050/1 && git checkout FETCH_HEAD</pre>
85
+            The repo is the stanza following <code>fetch</code> and the branch
86
+            is the stanza following that:
87
+            <pre>NOVA_REPO=https://review.openstack.org/p/openstack/nova
88
+NOVA_BRANCH=refs/changes/50/5050/1</pre></dd>
89
+
90
+        </dl>
91
+      </section
92
+
93
+      <footer>
94
+        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
95
+      </footer>
96
+
97
+    </div> <!-- /container -->
98
+
99
+  </body>
100
+</html>
0 101
deleted file mode 100644
... ...
@@ -1,616 +0,0 @@
1
-article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
2
-audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
3
-audio:not([controls]){display:none;}
4
-html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
5
-a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
6
-a:hover,a:active{outline:0;}
7
-sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
8
-sup{top:-0.5em;}
9
-sub{bottom:-0.25em;}
10
-img{max-width:100%;height:auto;border:0;-ms-interpolation-mode:bicubic;}
11
-button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
12
-button,input{*overflow:visible;line-height:normal;}
13
-button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
14
-button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}
15
-input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}
16
-input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
17
-textarea{overflow:auto;vertical-align:top;}
18
-body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333333;background-color:#ffffff;}
19
-a{color:#0088cc;text-decoration:none;}
20
-a:hover{color:#005580;text-decoration:underline;}
21
-.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";}
22
-.row:after{clear:both;}
23
-[class*="span"]{float:left;margin-left:20px;}
24
-.span1{width:60px;}
25
-.span2{width:140px;}
26
-.span3{width:220px;}
27
-.span4{width:300px;}
28
-.span5{width:380px;}
29
-.span6{width:460px;}
30
-.span7{width:540px;}
31
-.span8{width:620px;}
32
-.span9{width:700px;}
33
-.span10{width:780px;}
34
-.span11{width:860px;}
35
-.span12,.container{width:940px;}
36
-.offset1{margin-left:100px;}
37
-.offset2{margin-left:180px;}
38
-.offset3{margin-left:260px;}
39
-.offset4{margin-left:340px;}
40
-.offset5{margin-left:420px;}
41
-.offset6{margin-left:500px;}
42
-.offset7{margin-left:580px;}
43
-.offset8{margin-left:660px;}
44
-.offset9{margin-left:740px;}
45
-.offset10{margin-left:820px;}
46
-.offset11{margin-left:900px;}
47
-.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";}
48
-.row-fluid:after{clear:both;}
49
-.row-fluid>[class*="span"]{float:left;margin-left:2.127659574%;}
50
-.row-fluid>[class*="span"]:first-child{margin-left:0;}
51
-.row-fluid .span1{width:6.382978723%;}
52
-.row-fluid .span2{width:14.89361702%;}
53
-.row-fluid .span3{width:23.404255317%;}
54
-.row-fluid .span4{width:31.914893614%;}
55
-.row-fluid .span5{width:40.425531911%;}
56
-.row-fluid .span6{width:48.93617020799999%;}
57
-.row-fluid .span7{width:57.446808505%;}
58
-.row-fluid .span8{width:65.95744680199999%;}
59
-.row-fluid .span9{width:74.468085099%;}
60
-.row-fluid .span10{width:82.97872339599999%;}
61
-.row-fluid .span11{width:91.489361693%;}
62
-.row-fluid .span12{width:99.99999998999999%;}
63
-.container{width:940px;margin-left:auto;margin-right:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";}
64
-.container:after{clear:both;}
65
-.container-fluid{padding-left:20px;padding-right:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";}
66
-.container-fluid:after{clear:both;}
67
-p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;}p small{font-size:11px;color:#999999;}
68
-.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;}
69
-h1,h2,h3,h4,h5,h6{margin:0;font-weight:bold;color:#333333;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;}
70
-h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;}
71
-h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;}
72
-h3{line-height:27px;font-size:18px;}h3 small{font-size:14px;}
73
-h4,h5,h6{line-height:18px;}
74
-h4{font-size:14px;}h4 small{font-size:12px;}
75
-h5{font-size:12px;}
76
-h6{font-size:11px;color:#999999;text-transform:uppercase;}
77
-.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;}
78
-.page-header h1{line-height:1;}
79
-ul,ol{padding:0;margin:0 0 9px 25px;}
80
-ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
81
-ul{list-style:disc;}
82
-ol{list-style:decimal;}
83
-li{line-height:18px;}
84
-ul.unstyled{margin-left:0;list-style:none;}
85
-dl{margin-bottom:18px;}
86
-dt,dd{line-height:18px;}
87
-dt{font-weight:bold;}
88
-dd{margin-left:9px;}
89
-hr{margin:18px 0;border:0;border-top:1px solid #e5e5e5;border-bottom:1px solid #ffffff;}
90
-strong{font-weight:bold;}
91
-em{font-style:italic;}
92
-.muted{color:#999999;}
93
-abbr{font-size:90%;text-transform:uppercase;border-bottom:1px dotted #ddd;cursor:help;}
94
-blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;}
95
-blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
96
-blockquote.pull-right{float:right;padding-left:0;padding-right:15px;border-left:0;border-right:5px solid #eeeeee;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
97
-q:before,q:after,blockquote:before,blockquote:after{content:"";}
98
-address{display:block;margin-bottom:18px;line-height:18px;font-style:normal;}
99
-small{font-size:100%;}
100
-cite{font-style:normal;}
101
-code,pre{padding:0 3px 2px;font-family:Menlo,Monaco,"Courier New",monospace;font-size:12px;color:#333333;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
102
-code{padding:3px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;}
103
-pre{display:block;padding:8.5px;margin:0 0 9px;font-size:12px;line-height:18px;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.15);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;white-space:pre;white-space:pre-wrap;word-break:break-all;}pre.prettyprint{margin-bottom:18px;}
104
-pre code{padding:0;background-color:transparent;}
105
-form{margin:0 0 18px;}
106
-fieldset{padding:0;margin:0;border:0;}
107
-legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333333;border:0;border-bottom:1px solid #eee;}
108
-label,input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:18px;}
109
-label{display:block;margin-bottom:5px;color:#333333;}
110
-input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555555;border:1px solid #ccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
111
-.uneditable-textarea{width:auto;height:auto;}
112
-label input,label textarea,label select{display:block;}
113
-input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;border:0;cursor:pointer;border-radius:0 \0/;}
114
-input[type="file"]{padding:initial;line-height:initial;border:initial;background-color:#ffffff;background-color:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
115
-input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;}
116
-select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px;}
117
-select{width:220px;background-color:#ffffff;}
118
-select[multiple],select[size]{height:auto;}
119
-input[type="image"]{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
120
-textarea{height:auto;}
121
-input[type="hidden"]{display:none;}
122
-.radio,.checkbox{padding-left:18px;}
123
-.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;}
124
-.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}
125
-.radio.inline,.checkbox.inline{display:inline-block;margin-bottom:0;vertical-align:middle;}
126
-.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
127
-.controls>.radio.inline:first-child,.controls>.checkbox.inline:first-child{padding-top:0;}
128
-input,textarea{-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;}
129
-input:focus,textarea:focus{border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);outline:0;outline:thin dotted \9;}
130
-input[type="file"]:focus,input[type="checkbox"]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
131
-.input-mini{width:60px;}
132
-.input-small{width:90px;}
133
-.input-medium{width:150px;}
134
-.input-large{width:210px;}
135
-.input-xlarge{width:270px;}
136
-.input-xxlarge{width:530px;}
137
-input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{float:none;margin-left:0;}
138
-input.span1,textarea.span1,.uneditable-input.span1{width:50px;}
139
-input.span2,textarea.span2,.uneditable-input.span2{width:130px;}
140
-input.span3,textarea.span3,.uneditable-input.span3{width:210px;}
141
-input.span4,textarea.span4,.uneditable-input.span4{width:290px;}
142
-input.span5,textarea.span5,.uneditable-input.span5{width:370px;}
143
-input.span6,textarea.span6,.uneditable-input.span6{width:450px;}
144
-input.span7,textarea.span7,.uneditable-input.span7{width:530px;}
145
-input.span8,textarea.span8,.uneditable-input.span8{width:610px;}
146
-input.span9,textarea.span9,.uneditable-input.span9{width:690px;}
147
-input.span10,textarea.span10,.uneditable-input.span10{width:770px;}
148
-input.span11,textarea.span11,.uneditable-input.span11{width:850px;}
149
-input.span12,textarea.span12,.uneditable-input.span12{width:930px;}
150
-input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#f5f5f5;border-color:#ddd;cursor:not-allowed;}
151
-.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
152
-.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e;}
153
-.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
154
-.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
155
-.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392;}
156
-.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
157
-.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
158
-.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b;}
159
-.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
160
-input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
161
-.form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#f5f5f5;border-top:1px solid #ddd;}
162
-.uneditable-input{display:block;background-color:#ffffff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
163
-:-moz-placeholder{color:#999999;}
164
-::-webkit-input-placeholder{color:#999999;}
165
-.help-block{margin-top:5px;margin-bottom:0;color:#999999;}
166
-.help-inline{display:inline-block;*display:inline;*zoom:1;margin-bottom:9px;vertical-align:middle;padding-left:5px;}
167
-.input-prepend,.input-append{margin-bottom:5px;*zoom:1;}.input-prepend:before,.input-append:before,.input-prepend:after,.input-append:after{display:table;content:"";}
168
-.input-prepend:after,.input-append:after{clear:both;}
169
-.input-prepend input,.input-append input,.input-prepend .uneditable-input,.input-append .uneditable-input{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-prepend input:focus,.input-append input:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{position:relative;z-index:2;}
170
-.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc;}
171
-.input-prepend .add-on,.input-append .add-on{float:left;display:block;width:auto;min-width:16px;height:18px;margin-right:-1px;padding:4px 5px;font-weight:normal;line-height:18px;color:#999999;text-align:center;text-shadow:0 1px 0 #ffffff;background-color:#f5f5f5;border:1px solid #ccc;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
172
-.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546;}
173
-.input-prepend .add-on{*margin-top:1px;}
174
-.input-append input,.input-append .uneditable-input{float:left;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
175
-.input-append .uneditable-input{border-right-color:#ccc;}
176
-.input-append .add-on{margin-right:0;margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
177
-.input-append input:first-child{*margin-left:-160px;}.input-append input:first-child+.add-on{*margin-left:-21px;}
178
-.search-query{padding-left:14px;padding-right:14px;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px;}
179
-.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input{display:inline-block;margin-bottom:0;}
180
-.form-search label,.form-inline label,.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{display:inline-block;}
181
-.form-search .input-append .add-on,.form-inline .input-prepend .add-on,.form-search .input-append .add-on,.form-inline .input-prepend .add-on{vertical-align:middle;}
182
-.control-group{margin-bottom:9px;}
183
-.form-horizontal legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate;}
184
-.form-horizontal .control-group{margin-bottom:18px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";}
185
-.form-horizontal .control-group:after{clear:both;}
186
-.form-horizontal .control-group>label{float:left;width:140px;padding-top:5px;text-align:right;}
187
-.form-horizontal .controls{margin-left:160px;}
188
-.form-horizontal .form-actions{padding-left:160px;}
189
-table{max-width:100%;border-collapse:collapse;border-spacing:0;}
190
-.table{width:100%;margin-bottom:18px;}.table th,.table td{padding:8px;line-height:18px;text-align:left;border-top:1px solid #ddd;}
191
-.table th{font-weight:bold;vertical-align:bottom;}
192
-.table td{vertical-align:top;}
193
-.table thead:first-child tr th,.table thead:first-child tr td{border-top:0;}
194
-.table tbody+tbody{border-top:2px solid #ddd;}
195
-.table-condensed th,.table-condensed td{padding:4px 5px;}
196
-.table-bordered{border:1px solid #ddd;border-collapse:separate;*border-collapse:collapsed;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.table-bordered th+th,.table-bordered td+td,.table-bordered th+td,.table-bordered td+th{border-left:1px solid #ddd;}
197
-.table-bordered thead:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child th,.table-bordered tbody:first-child tr:first-child td{border-top:0;}
198
-.table-bordered thead:first-child tr:first-child th:first-child,.table-bordered tbody:first-child tr:first-child td:first-child{-webkit-border-radius:4px 0 0 0;-moz-border-radius:4px 0 0 0;border-radius:4px 0 0 0;}
199
-.table-bordered thead:first-child tr:first-child th:last-child,.table-bordered tbody:first-child tr:first-child td:last-child{-webkit-border-radius:0 4px 0 0;-moz-border-radius:0 4px 0 0;border-radius:0 4px 0 0;}
200
-.table-bordered thead:last-child tr:last-child th:first-child,.table-bordered tbody:last-child tr:last-child td:first-child{-webkit-border-radius:0 0 0 4px;-moz-border-radius:0 0 0 4px;border-radius:0 0 0 4px;}
201
-.table-bordered thead:last-child tr:last-child th:last-child,.table-bordered tbody:last-child tr:last-child td:last-child{-webkit-border-radius:0 0 4px 0;-moz-border-radius:0 0 4px 0;border-radius:0 0 4px 0;}
202
-.table-striped tbody tr:nth-child(even) td,.table-striped tbody tr:nth-child(even) th{background-color:#f1f1f1;}
203
-table .span1{float:none;width:44px;margin-left:0;}
204
-table .span2{float:none;width:124px;margin-left:0;}
205
-table .span3{float:none;width:204px;margin-left:0;}
206
-table .span4{float:none;width:284px;margin-left:0;}
207
-table .span5{float:none;width:364px;margin-left:0;}
208
-table .span6{float:none;width:444px;margin-left:0;}
209
-table .span7{float:none;width:524px;margin-left:0;}
210
-table .span8{float:none;width:604px;margin-left:0;}
211
-table .span9{float:none;width:684px;margin-left:0;}
212
-table .span10{float:none;width:764px;margin-left:0;}
213
-table .span11{float:none;width:844px;margin-left:0;}
214
-table .span12{float:none;width:924px;margin-left:0;}
215
-[class^="icon-"]{display:inline-block;width:14px;height:14px;vertical-align:text-top;background-image:url(../img/glyphicons-halflings.png);background-position:14px 14px;background-repeat:no-repeat;*margin-right:.3em;}[class^="icon-"]:last-child{*margin-left:0;}
216
-.icon-white{background-image:url(../img/glyphicons-halflings-white.png);}
217
-.icon-glass{background-position:0 0;}
218
-.icon-music{background-position:-24px 0;}
219
-.icon-search{background-position:-48px 0;}
220
-.icon-envelope{background-position:-72px 0;}
221
-.icon-heart{background-position:-96px 0;}
222
-.icon-star{background-position:-120px 0;}
223
-.icon-star-empty{background-position:-144px 0;}
224
-.icon-user{background-position:-168px 0;}
225
-.icon-film{background-position:-192px 0;}
226
-.icon-th-large{background-position:-216px 0;}
227
-.icon-th{background-position:-240px 0;}
228
-.icon-th-list{background-position:-264px 0;}
229
-.icon-ok{background-position:-288px 0;}
230
-.icon-remove{background-position:-312px 0;}
231
-.icon-zoom-in{background-position:-336px 0;}
232
-.icon-zoom-out{background-position:-360px 0;}
233
-.icon-off{background-position:-384px 0;}
234
-.icon-signal{background-position:-408px 0;}
235
-.icon-cog{background-position:-432px 0;}
236
-.icon-trash{background-position:-456px 0;}
237
-.icon-home{background-position:0 -24px;}
238
-.icon-file{background-position:-24px -24px;}
239
-.icon-time{background-position:-48px -24px;}
240
-.icon-road{background-position:-72px -24px;}
241
-.icon-download-alt{background-position:-96px -24px;}
242
-.icon-download{background-position:-120px -24px;}
243
-.icon-upload{background-position:-144px -24px;}
244
-.icon-inbox{background-position:-168px -24px;}
245
-.icon-play-circle{background-position:-192px -24px;}
246
-.icon-repeat{background-position:-216px -24px;}
247
-.icon-refresh{background-position:-240px -24px;}
248
-.icon-list-alt{background-position:-264px -24px;}
249
-.icon-lock{background-position:-287px -24px;}
250
-.icon-flag{background-position:-312px -24px;}
251
-.icon-headphones{background-position:-336px -24px;}
252
-.icon-volume-off{background-position:-360px -24px;}
253
-.icon-volume-down{background-position:-384px -24px;}
254
-.icon-volume-up{background-position:-408px -24px;}
255
-.icon-qrcode{background-position:-432px -24px;}
256
-.icon-barcode{background-position:-456px -24px;}
257
-.icon-tag{background-position:0 -48px;}
258
-.icon-tags{background-position:-25px -48px;}
259
-.icon-book{background-position:-48px -48px;}
260
-.icon-bookmark{background-position:-72px -48px;}
261
-.icon-print{background-position:-96px -48px;}
262
-.icon-camera{background-position:-120px -48px;}
263
-.icon-font{background-position:-144px -48px;}
264
-.icon-bold{background-position:-167px -48px;}
265
-.icon-italic{background-position:-192px -48px;}
266
-.icon-text-height{background-position:-216px -48px;}
267
-.icon-text-width{background-position:-240px -48px;}
268
-.icon-align-left{background-position:-264px -48px;}
269
-.icon-align-center{background-position:-288px -48px;}
270
-.icon-align-right{background-position:-312px -48px;}
271
-.icon-align-justify{background-position:-336px -48px;}
272
-.icon-list{background-position:-360px -48px;}
273
-.icon-indent-left{background-position:-384px -48px;}
274
-.icon-indent-right{background-position:-408px -48px;}
275
-.icon-facetime-video{background-position:-432px -48px;}
276
-.icon-picture{background-position:-456px -48px;}
277
-.icon-pencil{background-position:0 -72px;}
278
-.icon-map-marker{background-position:-24px -72px;}
279
-.icon-adjust{background-position:-48px -72px;}
280
-.icon-tint{background-position:-72px -72px;}
281
-.icon-edit{background-position:-96px -72px;}
282
-.icon-share{background-position:-120px -72px;}
283
-.icon-check{background-position:-144px -72px;}
284
-.icon-move{background-position:-168px -72px;}
285
-.icon-step-backward{background-position:-192px -72px;}
286
-.icon-fast-backward{background-position:-216px -72px;}
287
-.icon-backward{background-position:-240px -72px;}
288
-.icon-play{background-position:-264px -72px;}
289
-.icon-pause{background-position:-288px -72px;}
290
-.icon-stop{background-position:-312px -72px;}
291
-.icon-forward{background-position:-336px -72px;}
292
-.icon-fast-forward{background-position:-360px -72px;}
293
-.icon-step-forward{background-position:-384px -72px;}
294
-.icon-eject{background-position:-408px -72px;}
295
-.icon-chevron-left{background-position:-432px -72px;}
296
-.icon-chevron-right{background-position:-456px -72px;}
297
-.icon-plus-sign{background-position:0 -96px;}
298
-.icon-minus-sign{background-position:-24px -96px;}
299
-.icon-remove-sign{background-position:-48px -96px;}
300
-.icon-ok-sign{background-position:-72px -96px;}
301
-.icon-question-sign{background-position:-96px -96px;}
302
-.icon-info-sign{background-position:-120px -96px;}
303
-.icon-screenshot{background-position:-144px -96px;}
304
-.icon-remove-circle{background-position:-168px -96px;}
305
-.icon-ok-circle{background-position:-192px -96px;}
306
-.icon-ban-circle{background-position:-216px -96px;}
307
-.icon-arrow-left{background-position:-240px -96px;}
308
-.icon-arrow-right{background-position:-264px -96px;}
309
-.icon-arrow-up{background-position:-289px -96px;}
310
-.icon-arrow-down{background-position:-312px -96px;}
311
-.icon-share-alt{background-position:-336px -96px;}
312
-.icon-resize-full{background-position:-360px -96px;}
313
-.icon-resize-small{background-position:-384px -96px;}
314
-.icon-plus{background-position:-408px -96px;}
315
-.icon-minus{background-position:-433px -96px;}
316
-.icon-asterisk{background-position:-456px -96px;}
317
-.icon-exclamation-sign{background-position:0 -120px;}
318
-.icon-gift{background-position:-24px -120px;}
319
-.icon-leaf{background-position:-48px -120px;}
320
-.icon-fire{background-position:-72px -120px;}
321
-.icon-eye-open{background-position:-96px -120px;}
322
-.icon-eye-close{background-position:-120px -120px;}
323
-.icon-warning-sign{background-position:-144px -120px;}
324
-.icon-plane{background-position:-168px -120px;}
325
-.icon-calendar{background-position:-192px -120px;}
326
-.icon-random{background-position:-216px -120px;}
327
-.icon-comment{background-position:-240px -120px;}
328
-.icon-magnet{background-position:-264px -120px;}
329
-.icon-chevron-up{background-position:-288px -120px;}
330
-.icon-chevron-down{background-position:-313px -119px;}
331
-.icon-retweet{background-position:-336px -120px;}
332
-.icon-shopping-cart{background-position:-360px -120px;}
333
-.icon-folder-close{background-position:-384px -120px;}
334
-.icon-folder-open{background-position:-408px -120px;}
335
-.icon-resize-vertical{background-position:-432px -119px;}
336
-.icon-resize-horizontal{background-position:-456px -118px;}
337
-.dropdown{position:relative;}
338
-.dropdown-toggle{*margin-bottom:-3px;}
339
-.dropdown-toggle:active,.open .dropdown-toggle{outline:0;}
340
-.caret{display:inline-block;width:0;height:0;text-indent:-99999px;*text-indent:0;vertical-align:top;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid #000000;opacity:0.3;filter:alpha(opacity=30);content:"\2193";}
341
-.dropdown .caret{margin-top:8px;margin-left:2px;}
342
-.dropdown:hover .caret,.open.dropdown .caret{opacity:1;filter:alpha(opacity=100);}
343
-.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;float:left;display:none;min-width:160px;max-width:220px;_width:160px;padding:4px 0;margin:0;list-style:none;background-color:#ffffff;border-color:#ccc;border-color:rgba(0, 0, 0, 0.2);border-style:solid;border-width:1px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;*border-right-width:2px;*border-bottom-width:2px;}.dropdown-menu.bottom-up{top:auto;bottom:100%;margin-bottom:2px;}
344
-.dropdown-menu .divider{height:1px;margin:5px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #ffffff;*width:100%;*margin:-5px 0 5px;}
345
-.dropdown-menu a{display:block;padding:3px 15px;clear:both;font-weight:normal;line-height:18px;color:#555555;white-space:nowrap;}
346
-.dropdown-menu li>a:hover,.dropdown-menu .active>a,.dropdown-menu .active>a:hover{color:#ffffff;text-decoration:none;background-color:#0088cc;}
347
-.dropdown.open{*z-index:1000;}.dropdown.open .dropdown-toggle{color:#ffffff;background:#ccc;background:rgba(0, 0, 0, 0.3);}
348
-.dropdown.open .dropdown-menu{display:block;}
349
-.typeahead{margin-top:2px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
350
-.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
351
-.fade{-webkit-transition:opacity 0.15s linear;-moz-transition:opacity 0.15s linear;-ms-transition:opacity 0.15s linear;-o-transition:opacity 0.15s linear;transition:opacity 0.15s linear;opacity:0;}.fade.in{opacity:1;}
352
-.collapse{-webkit-transition:height 0.35s ease;-moz-transition:height 0.35s ease;-ms-transition:height 0.35s ease;-o-transition:height 0.35s ease;transition:height 0.35s ease;position:relative;overflow:hidden;height:0;}.collapse.in{height:auto;}
353
-.close{float:right;font-size:20px;font-weight:bold;line-height:18px;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20);}.close:hover{color:#000000;text-decoration:none;opacity:0.4;filter:alpha(opacity=40);cursor:pointer;}
354
-.btn{display:inline-block;padding:4px 10px 4px;font-size:13px;line-height:18px;color:#333333;text-align:center;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);background-color:#fafafa;background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(25%, #ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-moz-linear-gradient(top, #ffffff, #ffffff 25%, #e6e6e6);background-image:-ms-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:-o-linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-image:linear-gradient(#ffffff, #ffffff 25%, #e6e6e6);background-repeat:no-repeat;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);border:1px solid #ccc;border-bottom-color:#bbb;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);cursor:pointer;*margin-left:.3em;}.btn:first-child{*margin-left:0;}
355
-.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-ms-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}
356
-.btn:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
357
-.btn.active,.btn:active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);background-color:#e6e6e6;background-color:#d9d9d9 \9;color:rgba(0, 0, 0, 0.5);outline:0;}
358
-.btn.disabled,.btn[disabled]{cursor:default;background-image:none;background-color:#e6e6e6;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
359
-.btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
360
-.btn-large .icon{margin-top:1px;}
361
-.btn-small{padding:5px 9px;font-size:11px;line-height:16px;}
362
-.btn-small .icon{margin-top:-1px;}
363
-.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover{text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);color:#ffffff;}
364
-.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active{color:rgba(255, 255, 255, 0.75);}
365
-.btn-primary{background-color:#006dcc;background-image:-moz-linear-gradient(top, #0088cc, #0044cc);background-image:-ms-linear-gradient(top, #0088cc, #0044cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));background-image:-webkit-linear-gradient(top, #0088cc, #0044cc);background-image:-o-linear-gradient(top, #0088cc, #0044cc);background-image:linear-gradient(top, #0088cc, #0044cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0044cc', GradientType=0);border-color:#0044cc #0044cc #002a80;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#0044cc;}
366
-.btn-primary:active,.btn-primary.active{background-color:#003399 \9;}
367
-.btn-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-ms-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(top, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;}
368
-.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
369
-.btn-danger{background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-ms-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(top, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;}
370
-.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
371
-.btn-success{background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-ms-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(top, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;}
372
-.btn-success:active,.btn-success.active{background-color:#408140 \9;}
373
-.btn-info{background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-ms-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(top, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;}
374
-.btn-info:active,.btn-info.active{background-color:#24748c \9;}
375
-button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;}
376
-button.btn.large,input[type="submit"].btn.large{*padding-top:7px;*padding-bottom:7px;}
377
-button.btn.small,input[type="submit"].btn.small{*padding-top:3px;*padding-bottom:3px;}
378
-.btn-group{position:relative;*zoom:1;*margin-left:.3em;}.btn-group:before,.btn-group:after{display:table;content:"";}
379
-.btn-group:after{clear:both;}
380
-.btn-group:first-child{*margin-left:0;}
381
-.btn-group+.btn-group{margin-left:5px;}
382
-.btn-toolbar{margin-top:9px;margin-bottom:9px;}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1;}
383
-.btn-group .btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
384
-.btn-group .btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
385
-.btn-group .btn:last-child,.btn-group .dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
386
-.btn-group .btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
387
-.btn-group .btn.large:last-child,.btn-group .large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
388
-.btn-group .btn:hover,.btn-group .btn:focus,.btn-group .btn:active,.btn-group .btn.active{z-index:2;}
389
-.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}
390
-.btn-group .dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);*padding-top:5px;*padding-bottom:5px;}
391
-.btn-group.open{*z-index:1000;}.btn-group.open .dropdown-menu{display:block;margin-top:1px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
392
-.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);}
393
-.btn .caret{margin-top:7px;margin-left:0;}
394
-.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100);}
395
-.btn-primary .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret{border-top-color:#ffffff;opacity:0.75;filter:alpha(opacity=75);}
396
-.btn-small .caret{margin-top:4px;}
397
-.alert{padding:8px 35px 8px 14px;margin-bottom:18px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);background-color:#fcf8e3;border:1px solid #fbeed5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
398
-.alert,.alert-heading{color:#c09853;}
399
-.alert .close{position:relative;top:-2px;right:-21px;line-height:18px;}
400
-.alert-success{background-color:#dff0d8;border-color:#d6e9c6;}
401
-.alert-success,.alert-success .alert-heading{color:#468847;}
402
-.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;}
403
-.alert-danger,.alert-error,.alert-danger .alert-heading,.alert-error .alert-heading{color:#b94a48;}
404
-.alert-info{background-color:#d9edf7;border-color:#bce8f1;}
405
-.alert-info,.alert-info .alert-heading{color:#3a87ad;}
406
-.alert-block{padding-top:14px;padding-bottom:14px;}
407
-.alert-block>p,.alert-block>ul{margin-bottom:0;}
408
-.alert-block p+p{margin-top:5px;}
409
-.nav{margin-left:0;margin-bottom:18px;list-style:none;}
410
-.nav>li>a{display:block;}
411
-.nav>li>a:hover{text-decoration:none;background-color:#eeeeee;}
412
-.nav-list{padding-left:14px;padding-right:14px;margin-bottom:0;}
413
-.nav-list>li>a,.nav-list .nav-header{display:block;padding:3px 15px;margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 rgba(255, 255, 255, 0.5);}
414
-.nav-list .nav-header{font-size:11px;font-weight:bold;line-height:18px;color:#999999;text-transform:uppercase;}
415
-.nav-list>li+.nav-header{margin-top:9px;}
416
-.nav-list .active>a{color:#ffffff;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.2);background-color:#0088cc;}
417
-.nav-list .icon{margin-right:2px;}
418
-.nav-tabs,.nav-pills{*zoom:1;}.nav-tabs:before,.nav-pills:before,.nav-tabs:after,.nav-pills:after{display:table;content:"";}
419
-.nav-tabs:after,.nav-pills:after{clear:both;}
420
-.nav-tabs>li,.nav-pills>li{float:left;}
421
-.nav-tabs>li>a,.nav-pills>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px;}
422
-.nav-tabs{border-bottom:1px solid #ddd;}
423
-.nav-tabs>li{margin-bottom:-1px;}
424
-.nav-tabs>li>a{padding-top:9px;padding-bottom:9px;border:1px solid transparent;-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}.nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #dddddd;}
425
-.nav-tabs>.active>a,.nav-tabs>.active>a:hover{color:#555555;background-color:#ffffff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default;}
426
-.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
427
-.nav-pills .active>a,.nav-pills .active>a:hover{color:#ffffff;background-color:#0088cc;}
428
-.nav-stacked>li{float:none;}
429
-.nav-stacked>li>a{margin-right:0;}
430
-.nav-tabs.nav-stacked{border-bottom:0;}
431
-.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
432
-.nav-tabs.nav-stacked>li:first-child>a{-webkit-border-radius:4px 4px 0 0;-moz-border-radius:4px 4px 0 0;border-radius:4px 4px 0 0;}
433
-.nav-tabs.nav-stacked>li:last-child>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}
434
-.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2;}
435
-.nav-pills.nav-stacked>li>a{margin-bottom:3px;}
436
-.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px;}
437
-.nav-tabs .dropdown-menu,.nav-pills .dropdown-menu{margin-top:1px;border-width:1px;}
438
-.nav-pills .dropdown-menu{-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
439
-.nav-tabs .dropdown-toggle .caret,.nav-pills .dropdown-toggle .caret{border-top-color:#0088cc;margin-top:6px;}
440
-.nav-tabs .dropdown-toggle:hover .caret,.nav-pills .dropdown-toggle:hover .caret{border-top-color:#005580;}
441
-.nav-tabs .active .dropdown-toggle .caret,.nav-pills .active .dropdown-toggle .caret{border-top-color:#333333;}
442
-.nav>.dropdown.active>a:hover{color:#000000;cursor:pointer;}
443
-.nav-tabs .open .dropdown-toggle,.nav-pills .open .dropdown-toggle,.nav>.open.active>a:hover{color:#ffffff;background-color:#999999;border-color:#999999;}
444
-.nav .open .caret,.nav .open.active .caret,.nav .open a:hover .caret{border-top-color:#ffffff;opacity:1;filter:alpha(opacity=100);}
445
-.tabs-stacked .open>a:hover{border-color:#999999;}
446
-.tabbable{*zoom:1;}.tabbable:before,.tabbable:after{display:table;content:"";}
447
-.tabbable:after{clear:both;}
448
-.tabs-below .nav-tabs,.tabs-right .nav-tabs,.tabs-left .nav-tabs{border-bottom:0;}
449
-.tab-content>.tab-pane,.pill-content>.pill-pane{display:none;}
450
-.tab-content>.active,.pill-content>.active{display:block;}
451
-.tabs-below .nav-tabs{border-top:1px solid #ddd;}
452
-.tabs-below .nav-tabs>li{margin-top:-1px;margin-bottom:0;}
453
-.tabs-below .nav-tabs>li>a{-webkit-border-radius:0 0 4px 4px;-moz-border-radius:0 0 4px 4px;border-radius:0 0 4px 4px;}.tabs-below .nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd;}
454
-.tabs-below .nav-tabs .active>a,.tabs-below .nav-tabs .active>a:hover{border-color:transparent #ddd #ddd #ddd;}
455
-.tabs-left .nav-tabs>li,.tabs-right .nav-tabs>li{float:none;}
456
-.tabs-left .nav-tabs>li>a,.tabs-right .nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px;}
457
-.tabs-left .nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd;}
458
-.tabs-left .nav-tabs>li>a{margin-right:-1px;-webkit-border-radius:4px 0 0 4px;-moz-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px;}
459
-.tabs-left .nav-tabs>li>a:hover{border-color:#eeeeee #dddddd #eeeeee #eeeeee;}
460
-.tabs-left .nav-tabs .active>a,.tabs-left .nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd;*border-right-color:#ffffff;}
461
-.tabs-right .nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd;}
462
-.tabs-right .nav-tabs>li>a{margin-left:-1px;-webkit-border-radius:0 4px 4px 0;-moz-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0;}
463
-.tabs-right .nav-tabs>li>a:hover{border-color:#eeeeee #eeeeee #eeeeee #dddddd;}
464
-.tabs-right .nav-tabs .active>a,.tabs-right .nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent;*border-left-color:#ffffff;}
465
-.navbar{overflow:visible;margin-bottom:18px;}
466
-.navbar-inner{padding-left:20px;padding-right:20px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);}
467
-.btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);}.btn-navbar:hover,.btn-navbar:active,.btn-navbar.active,.btn-navbar.disabled,.btn-navbar[disabled]{background-color:#222222;}
468
-.btn-navbar:active,.btn-navbar.active{background-color:#080808 \9;}
469
-.btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);}
470
-.btn-navbar .icon-bar+.icon-bar{margin-top:3px;}
471
-.nav-collapse.collapse{height:auto;}
472
-.navbar .brand:hover{text-decoration:none;}
473
-.navbar .brand{float:left;display:block;padding:8px 20px 12px;margin-left:-20px;font-size:20px;font-weight:200;line-height:1;color:#ffffff;}
474
-.navbar .navbar-text{margin-bottom:0;line-height:40px;color:#999999;}.navbar .navbar-text a:hover{color:#ffffff;background-color:transparent;}
475
-.navbar .btn,.navbar .btn-group{margin-top:5px;}
476
-.navbar .btn-group .btn{margin-top:0;}
477
-.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";}
478
-.navbar-form:after{clear:both;}
479
-.navbar-form input,.navbar-form select{display:inline-block;margin-top:5px;margin-bottom:0;}
480
-.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;}
481
-.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;}
482
-.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0;}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#ffffff;color:rgba(255, 255, 255, 0.75);background:#666;background:rgba(255, 255, 255, 0.3);border:1px solid #111;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.navbar-search .search-query :-moz-placeholder{color:#eeeeee;}
483
-.navbar-search .search-query::-webkit-input-placeholder{color:#eeeeee;}
484
-.navbar-search .search-query:hover{color:#ffffff;background-color:#999999;background-color:rgba(255, 255, 255, 0.5);}
485
-.navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;}
486
-.navbar-fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030;}
487
-.navbar-fixed-top .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
488
-.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;}
489
-.navbar .nav.pull-right{float:right;}
490
-.navbar .nav>li{display:block;float:left;}
491
-.navbar .nav>li>a{float:none;padding:10px 10px 11px;line-height:19px;color:#999999;text-decoration:none;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}
492
-.navbar .nav>li>a:hover{background-color:transparent;color:#ffffff;text-decoration:none;}
493
-.navbar .nav .active>a,.navbar .nav .active>a:hover{color:#ffffff;text-decoration:none;background-color:#222222;background-color:rgba(0, 0, 0, 0.5);}
494
-.navbar .divider-vertical{height:40px;width:1px;margin:0 9px;overflow:hidden;background-color:#222222;border-right:1px solid #333333;}
495
-.navbar .nav.pull-right{margin-left:10px;margin-right:0;}
496
-.navbar .dropdown-menu{margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.navbar .dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;}
497
-.navbar .dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;}
498
-.navbar .nav .dropdown-toggle .caret,.navbar .nav .open.dropdown .caret{border-top-color:#ffffff;}
499
-.navbar .nav .active .caret{opacity:1;filter:alpha(opacity=100);}
500
-.navbar .nav .open>.dropdown-toggle,.navbar .nav .active>.dropdown-toggle,.navbar .nav .open.active>.dropdown-toggle{background-color:transparent;}
501
-.navbar .nav .active>.dropdown-toggle:hover{color:#ffffff;}
502
-.navbar .nav.pull-right .dropdown-menu{left:auto;right:0;}.navbar .nav.pull-right .dropdown-menu:before{left:auto;right:12px;}
503
-.navbar .nav.pull-right .dropdown-menu:after{left:auto;right:13px;}
504
-.breadcrumb{padding:7px 14px;margin:0 0 18px;background-color:#fbfbfb;background-image:-moz-linear-gradient(top, #ffffff, #f5f5f5);background-image:-ms-linear-gradient(top, #ffffff, #f5f5f5);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f5f5f5));background-image:-webkit-linear-gradient(top, #ffffff, #f5f5f5);background-image:-o-linear-gradient(top, #ffffff, #f5f5f5);background-image:linear-gradient(top, #ffffff, #f5f5f5);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#f5f5f5', GradientType=0);border:1px solid #ddd;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;}.breadcrumb li{display:inline;text-shadow:0 1px 0 #ffffff;}
505
-.breadcrumb .divider{padding:0 5px;color:#999999;}
506
-.breadcrumb .active a{color:#333333;}
507
-.pagination{height:36px;margin:18px 0;}
508
-.pagination ul{display:inline-block;*display:inline;*zoom:1;margin-left:0;margin-bottom:0;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:0 1px 2px rgba(0, 0, 0, 0.05);}
509
-.pagination li{display:inline;}
510
-.pagination a{float:left;padding:0 14px;line-height:34px;text-decoration:none;border:1px solid #ddd;border-left-width:0;}
511
-.pagination a:hover,.pagination .active a{background-color:#f5f5f5;}
512
-.pagination .active a{color:#999999;cursor:default;}
513
-.pagination .disabled a,.pagination .disabled a:hover{color:#999999;background-color:transparent;cursor:default;}
514
-.pagination li:first-child a{border-left-width:1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
515
-.pagination li:last-child a{-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
516
-.pagination-centered{text-align:center;}
517
-.pagination-right{text-align:right;}
518
-.pager{margin-left:0;margin-bottom:18px;list-style:none;text-align:center;*zoom:1;}.pager:before,.pager:after{display:table;content:"";}
519
-.pager:after{clear:both;}
520
-.pager li{display:inline;}
521
-.pager a{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;-webkit-border-radius:15px;-moz-border-radius:15px;border-radius:15px;}
522
-.pager a:hover{text-decoration:none;background-color:#f5f5f5;}
523
-.pager .next a{float:right;}
524
-.pager .previous a{float:left;}
525
-.modal-open .dropdown-menu{z-index:2050;}
526
-.modal-open .dropdown.open{*z-index:2050;}
527
-.modal-open .popover{z-index:2060;}
528
-.modal-open .tooltip{z-index:2070;}
529
-.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000000;}.modal-backdrop.fade{opacity:0;}
530
-.modal-backdrop,.modal-backdrop.fade.in{opacity:0.8;filter:alpha(opacity=80);}
531
-.modal{position:fixed;top:50%;left:50%;z-index:1050;max-height:500px;overflow:auto;width:560px;margin:-250px 0 0 -280px;background-color:#ffffff;border:1px solid #999;border:1px solid rgba(0, 0, 0, 0.3);*border:1px solid #999;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.modal.fade{-webkit-transition:opacity .3s linear, top .3s ease-out;-moz-transition:opacity .3s linear, top .3s ease-out;-ms-transition:opacity .3s linear, top .3s ease-out;-o-transition:opacity .3s linear, top .3s ease-out;transition:opacity .3s linear, top .3s ease-out;top:-25%;}
532
-.modal.fade.in{top:50%;}
533
-.modal-header{padding:9px 15px;border-bottom:1px solid #eee;}.modal-header .close{margin-top:2px;}
534
-.modal-body{padding:15px;}
535
-.modal-footer{padding:14px 15px 15px;margin-bottom:0;background-color:#f5f5f5;border-top:1px solid #ddd;-webkit-border-radius:0 0 6px 6px;-moz-border-radius:0 0 6px 6px;border-radius:0 0 6px 6px;-webkit-box-shadow:inset 0 1px 0 #ffffff;-moz-box-shadow:inset 0 1px 0 #ffffff;box-shadow:inset 0 1px 0 #ffffff;*zoom:1;}.modal-footer:before,.modal-footer:after{display:table;content:"";}
536
-.modal-footer:after{clear:both;}
537
-.modal-footer .btn{float:right;margin-left:5px;margin-bottom:0;}
538
-.tooltip{position:absolute;z-index:1020;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);}
539
-.tooltip.top{margin-top:-2px;}
540
-.tooltip.right{margin-left:2px;}
541
-.tooltip.bottom{margin-top:2px;}
542
-.tooltip.left{margin-left:-2px;}
543
-.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
544
-.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}
545
-.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}
546
-.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}
547
-.tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
548
-.tooltip-arrow{position:absolute;width:0;height:0;}
549
-.popover{position:absolute;top:0;left:0;z-index:1010;display:none;padding:5px;}.popover.top{margin-top:-5px;}
550
-.popover.right{margin-left:5px;}
551
-.popover.bottom{margin-top:5px;}
552
-.popover.left{margin-left:-5px;}
553
-.popover.top .arrow{bottom:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
554
-.popover.right .arrow{top:50%;left:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-right:5px solid #000000;}
555
-.popover.bottom .arrow{top:0;left:50%;margin-left:-5px;border-left:5px solid transparent;border-right:5px solid transparent;border-bottom:5px solid #000000;}
556
-.popover.left .arrow{top:50%;right:0;margin-top:-5px;border-top:5px solid transparent;border-bottom:5px solid transparent;border-left:5px solid #000000;}
557
-.popover .arrow{position:absolute;width:0;height:0;}
558
-.popover-inner{padding:3px;width:280px;overflow:hidden;background:#000000;background:rgba(0, 0, 0, 0.8);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);-moz-box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);box-shadow:0 3px 7px rgba(0, 0, 0, 0.3);}
559
-.popover-title{padding:9px 15px;line-height:1;background-color:#f5f5f5;border-bottom:1px solid #eee;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;}
560
-.popover-content{padding:14px;background-color:#ffffff;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;-webkit-background-clip:padding-box;-moz-background-clip:padding-box;background-clip:padding-box;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;}
561
-.thumbnails{margin-left:-20px;list-style:none;*zoom:1;}.thumbnails:before,.thumbnails:after{display:table;content:"";}
562
-.thumbnails:after{clear:both;}
563
-.thumbnails>li{float:left;margin:0 0 18px 20px;}
564
-.thumbnail{display:block;padding:4px;line-height:1;border:1px solid #ddd;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:0 1px 1px rgba(0, 0, 0, 0.075);}
565
-a.thumbnail:hover{border-color:#0088cc;-webkit-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);-moz-box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);box-shadow:0 1px 4px rgba(0, 105, 214, 0.25);}
566
-.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto;}
567
-.thumbnail .caption{padding:9px;}
568
-.label{padding:1px 3px 2px;font-size:9.75px;font-weight:bold;color:#ffffff;text-transform:uppercase;background-color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
569
-.label-important{background-color:#b94a48;}
570
-.label-warning{background-color:#f89406;}
571
-.label-success{background-color:#468847;}
572
-.label-info{background-color:#3a87ad;}
573
-@-webkit-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@-moz-keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}@keyframes progress-bar-stripes{from{background-position:0 0;} to{background-position:40px 0;}}.progress{overflow:hidden;height:18px;margin-bottom:18px;background-color:#f7f7f7;background-image:-moz-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-ms-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9));background-image:-webkit-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:-o-linear-gradient(top, #f5f5f5, #f9f9f9);background-image:linear-gradient(top, #f5f5f5, #f9f9f9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#f5f5f5', endColorstr='#f9f9f9', GradientType=0);-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
574
-.progress .bar{width:0%;height:18px;color:#ffffff;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#0e90d2;background-image:-moz-linear-gradient(top, #149bdf, #0480be);background-image:-ms-linear-gradient(top, #149bdf, #0480be);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be));background-image:-webkit-linear-gradient(top, #149bdf, #0480be);background-image:-o-linear-gradient(top, #149bdf, #0480be);background-image:linear-gradient(top, #149bdf, #0480be);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#149bdf', endColorstr='#0480be', GradientType=0);-webkit-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-moz-box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);box-shadow:inset 0 -1px 0 rgba(0, 0, 0, 0.15);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-transition:width 0.6s ease;-moz-transition:width 0.6s ease;-ms-transition:width 0.6s ease;-o-transition:width 0.6s ease;transition:width 0.6s ease;}
575
-.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;-moz-background-size:40px 40px;-o-background-size:40px 40px;background-size:40px 40px;}
576
-.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;-moz-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite;}
577
-.progress-danger .bar{background-color:#dd514c;background-image:-moz-linear-gradient(top, #ee5f5b, #c43c35);background-image:-ms-linear-gradient(top, #ee5f5b, #c43c35);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35));background-image:-webkit-linear-gradient(top, #ee5f5b, #c43c35);background-image:-o-linear-gradient(top, #ee5f5b, #c43c35);background-image:linear-gradient(top, #ee5f5b, #c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#c43c35', GradientType=0);}
578
-.progress-danger.progress-striped .bar{background-color:#ee5f5b;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
579
-.progress-success .bar{background-color:#5eb95e;background-image:-moz-linear-gradient(top, #62c462, #57a957);background-image:-ms-linear-gradient(top, #62c462, #57a957);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957));background-image:-webkit-linear-gradient(top, #62c462, #57a957);background-image:-o-linear-gradient(top, #62c462, #57a957);background-image:linear-gradient(top, #62c462, #57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#57a957', GradientType=0);}
580
-.progress-success.progress-striped .bar{background-color:#62c462;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
581
-.progress-info .bar{background-color:#4bb1cf;background-image:-moz-linear-gradient(top, #5bc0de, #339bb9);background-image:-ms-linear-gradient(top, #5bc0de, #339bb9);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9));background-image:-webkit-linear-gradient(top, #5bc0de, #339bb9);background-image:-o-linear-gradient(top, #5bc0de, #339bb9);background-image:linear-gradient(top, #5bc0de, #339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#339bb9', GradientType=0);}
582
-.progress-info.progress-striped .bar{background-color:#5bc0de;background-image:-webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent));background-image:-webkit-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-moz-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-ms-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(-45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);}
583
-.accordion{margin-bottom:18px;}
584
-.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}
585
-.accordion-heading{border-bottom:0;}
586
-.accordion-heading .accordion-toggle{display:block;padding:8px 15px;}
587
-.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5;}
588
-.carousel{position:relative;margin-bottom:18px;line-height:1;}
589
-.carousel-inner{overflow:hidden;width:100%;position:relative;}
590
-.carousel .item{display:none;position:relative;-webkit-transition:0.6s ease-in-out left;-moz-transition:0.6s ease-in-out left;-ms-transition:0.6s ease-in-out left;-o-transition:0.6s ease-in-out left;transition:0.6s ease-in-out left;}
591
-.carousel .item>img{display:block;line-height:1;}
592
-.carousel .active,.carousel .next,.carousel .prev{display:block;}
593
-.carousel .active{left:0;}
594
-.carousel .next,.carousel .prev{position:absolute;top:0;width:100%;}
595
-.carousel .next{left:100%;}
596
-.carousel .prev{left:-100%;}
597
-.carousel .next.left,.carousel .prev.right{left:0;}
598
-.carousel .active.left{left:-100%;}
599
-.carousel .active.right{left:100%;}
600
-.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#ffffff;text-align:center;background:#222222;border:3px solid #ffffff;-webkit-border-radius:23px;-moz-border-radius:23px;border-radius:23px;opacity:0.5;filter:alpha(opacity=50);}.carousel-control.right{left:auto;right:15px;}
601
-.carousel-control:hover{color:#ffffff;text-decoration:none;opacity:0.9;filter:alpha(opacity=90);}
602
-.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:10px 15px 5px;background:#333333;background:rgba(0, 0, 0, 0.75);}
603
-.carousel-caption h4,.carousel-caption p{color:#ffffff;}
604
-.hero-unit{padding:60px;margin-bottom:30px;background-color:#f5f5f5;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;letter-spacing:-1px;}
605
-.hero-unit p{font-size:18px;font-weight:200;line-height:27px;}
606
-.pull-right{float:right;}
607
-.pull-left{float:left;}
608
-.hide{display:none;}
609
-.show{display:block;}
610
-.invisible{visibility:hidden;}
611
-
612
-
613
-/* Responsive css */
614
-
615
-/*.hidden{display:none;visibility:hidden;}*/
616
-/*@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:18px;} input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;} .input-prepend input[class*="span"],.input-append input[class*="span"]{width:auto;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{position:absolute;top:10px;left:10px;right:10px;width:auto;margin:0;}.modal.fade.in{top:auto;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:768px){.container{width:auto;padding:0 20px;} .row-fluid{width:100%;} .row{margin-left:0;} .row>[class*="span"],.row-fluid>[class*="span"]{float:none;display:block;width:auto;margin:0;}}@media (min-width:768px) and (max-width:980px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:20px;} .span1{width:42px;} .span2{width:104px;} .span3{width:166px;} .span4{width:228px;} .span5{width:290px;} .span6{width:352px;} .span7{width:414px;} .span8{width:476px;} .span9{width:538px;} .span10{width:600px;} .span11{width:662px;} .span12,.container{width:724px;} .offset1{margin-left:82px;} .offset2{margin-left:144px;} .offset3{margin-left:206px;} .offset4{margin-left:268px;} .offset5{margin-left:330px;} .offset6{margin-left:392px;} .offset7{margin-left:454px;} .offset8{margin-left:516px;} .offset9{margin-left:578px;} .offset10{margin-left:640px;} .offset11{margin-left:702px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.762430939%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid .span1{width:5.801104972%;} .row-fluid .span2{width:14.364640883%;} .row-fluid .span3{width:22.928176794%;} .row-fluid .span4{width:31.491712705%;} .row-fluid .span5{width:40.055248616%;} .row-fluid .span6{width:48.618784527%;} .row-fluid .span7{width:57.182320438000005%;} .row-fluid .span8{width:65.74585634900001%;} .row-fluid .span9{width:74.30939226%;} .row-fluid .span10{width:82.87292817100001%;} .row-fluid .span11{width:91.436464082%;} .row-fluid .span12{width:99.999999993%;} input.span1,textarea.span1,.uneditable-input.span1{width:32px;} input.span2,textarea.span2,.uneditable-input.span2{width:94px;} input.span3,textarea.span3,.uneditable-input.span3{width:156px;} input.span4,textarea.span4,.uneditable-input.span4{width:218px;} input.span5,textarea.span5,.uneditable-input.span5{width:280px;} input.span6,textarea.span6,.uneditable-input.span6{width:342px;} input.span7,textarea.span7,.uneditable-input.span7{width:404px;} input.span8,textarea.span8,.uneditable-input.span8{width:466px;} input.span9,textarea.span9,.uneditable-input.span9{width:528px;} input.span10,textarea.span10,.uneditable-input.span10{width:590px;} input.span11,textarea.span11,.uneditable-input.span11{width:652px;} input.span12,textarea.span12,.uneditable-input.span12{width:714px;}}@media (max-width:980px){body{padding-top:0;} .navbar-fixed-top{position:static;margin-bottom:18px;} .navbar-fixed-top .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .navbar .nav-collapse{clear:left;} .navbar .nav{float:none;margin:0 0 9px;} .navbar .nav>li{float:none;} .navbar .nav>li>a{margin-bottom:2px;} .navbar .nav>.divider-vertical{display:none;} .navbar .nav>li>a,.navbar .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .navbar .dropdown-menu li+li a{margin-bottom:2px;} .navbar .nav>li>a:hover,.navbar .dropdown-menu a:hover{background-color:#222222;} .navbar .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .navbar .dropdown-menu:before,.navbar .dropdown-menu:after{display:none;} .navbar .dropdown-menu .divider{display:none;} .navbar-form,.navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222222;border-bottom:1px solid #222222;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);} .navbar .nav.pull-right{float:none;margin-left:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .btn-navbar{display:block;} .nav-collapse{overflow:hidden;height:0;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:30px;} .span1{width:70px;} .span2{width:170px;} .span3{width:270px;} .span4{width:370px;} .span5{width:470px;} .span6{width:570px;} .span7{width:670px;} .span8{width:770px;} .span9{width:870px;} .span10{width:970px;} .span11{width:1070px;} .span12,.container{width:1170px;} .offset1{margin-left:130px;} .offset2{margin-left:230px;} .offset3{margin-left:330px;} .offset4{margin-left:430px;} .offset5{margin-left:530px;} .offset6{margin-left:630px;} .offset7{margin-left:730px;} .offset8{margin-left:830px;} .offset9{margin-left:930px;} .offset10{margin-left:1030px;} .offset11{margin-left:1130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.564102564%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid .span1{width:5.982905983%;} .row-fluid .span2{width:14.529914530000001%;} .row-fluid .span3{width:23.076923077%;} .row-fluid .span4{width:31.623931624%;} .row-fluid .span5{width:40.170940171000005%;} .row-fluid .span6{width:48.717948718%;} .row-fluid .span7{width:57.264957265%;} .row-fluid .span8{width:65.81196581200001%;} .row-fluid .span9{width:74.358974359%;} .row-fluid .span10{width:82.905982906%;} .row-fluid .span11{width:91.45299145300001%;} .row-fluid .span12{width:100%;} input.span1,textarea.span1,.uneditable-input.span1{width:60px;} input.span2,textarea.span2,.uneditable-input.span2{width:160px;} input.span3,textarea.span3,.uneditable-input.span3{width:260px;} input.span4,textarea.span4,.uneditable-input.span4{width:360px;} input.span5,textarea.span5,.uneditable-input.span5{width:460px;} input.span6,textarea.span6,.uneditable-input.span6{width:560px;} input.span7,textarea.span7,.uneditable-input.span7{width:660px;} input.span8,textarea.span8,.uneditable-input.span8{width:760px;} input.span9,textarea.span9,.uneditable-input.span9{width:860px;} input.span10,textarea.span10,.uneditable-input.span10{width:960px;} input.span11,textarea.span11,.uneditable-input.span11{width:1060px;} input.span12,textarea.span12,.uneditable-input.span12{width:1160px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;}}*/
617 1
deleted file mode 100644
... ...
@@ -1,122 +0,0 @@
1
-
2
-a.brand {
3
-	background: url(../images/small_logo.png) no-repeat left 6px;
4
-	width: 166px;
5
-	text-indent: -9999px;
6
-}
7
-
8
-code {
9
-  background-color: #ffffff;
10
-}
11
-
12
-#home .hero-unit {
13
-  background: url(../images/header_bg.png) top left repeat-x;
14
-	color: #fff;
15
-	padding-left: 25px;
16
-	padding-right: 25px;
17
-	height: 161px;
18
-}
19
-
20
-#home .hero-unit {
21
-	margin-right: ;
22
-}
23
-
24
-h1#main_header {
25
-	background: url(../images/logo.png) top left no-repeat;
26
-	text-indent: -9999px;
27
-}
28
-
29
-.sub_header {
30
-	font-size: 12px;
31
-	font-family: "anivers";
32
-	font-weight: normal;
33
-	width: 420px;
34
-}
35
-
36
-#home .hero-unit a {
37
-	color: #fff;
38
-	text-decoration: underline;
39
-}
40
-
41
-.clear {
42
-	clear: both;
43
-}
44
-
45
-ol#getting_started {
46
-	list-style: none;
47
-	width: 396px;
48
-	margin-top: -45px;
49
-	margin-right: 0;
50
-	margin-left: 72px;
51
-}
52
-
53
-ol#getting_started li {
54
-	background: url(../images/quickstart.png) top left no-repeat;
55
-}
56
-
57
-ol#getting_started li pre {
58
-	font-size: 11px;
59
-	padding: 5px;
60
-	background: #4d7ead;
61
-	border-color: #2c5d8d;
62
-	color: #fff;
63
-	overflow: auto;
64
-}
65
-
66
-li#ubuntu {
67
-	height: 46px;
68
-	padding: ;
69
-	padding-left: 82px;
70
-	padding-top: 27px;
71
-	margin-bottom: 14px;
72
-}
73
-
74
-li#github {
75
-	background-position: left -70px !important;
76
-	height: 61px;
77
-	padding: ;
78
-	padding-left: 82px;
79
-	padding-top: 4px;
80
-	margin-bottom: 25px;
81
-}
82
-
83
-
84
-li#install {
85
-	background-position: left bottom !important;
86
-	height: 61px;
87
-	padding: ;
88
-	padding-left: 82px;
89
-	padding-top: 4px;
90
-	margin-bottom: 25px;
91
-}
92
-
93
-h2 small {
94
-	font-size: 12px;
95
-	font-style: italic;
96
-}
97
-
98
-.container section {
99
-	margin-bottom: 25px;
100
-}
101
-
102
-
103
-thead, tfoot{
104
-	background: #ededed;
105
-	color: #444444;
106
-}
107
-
108
-table {
109
-	color: #444;
110
-}
111
-a.table-action {
112
-	display: block;
113
-	width: 45px;
114
-}
115
-
116
-footer {
117
-	clear: both;
118
-}
119
-
120
-.wat {
121
-	margin-top: 33px;
122
-}
123 1
\ No newline at end of file
124 2
deleted file mode 100644
125 3
Binary files a/docs/source/assets/images/devstack.png and /dev/null differ
126 4
deleted file mode 100644
127 5
Binary files a/docs/source/assets/images/header_bg.png and /dev/null differ
128 6
deleted file mode 100644
129 7
Binary files a/docs/source/assets/images/logo.png and /dev/null differ
130 8
deleted file mode 100644
131 9
Binary files a/docs/source/assets/images/quickstart.png and /dev/null differ
132 10
deleted file mode 100644
133 11
Binary files a/docs/source/assets/images/small_logo.png and /dev/null differ
134 12
deleted file mode 100644
... ...
@@ -1,1722 +0,0 @@
1
-/* ===================================================
2
- * bootstrap-transition.js v2.0.0
3
- * http://twitter.github.com/bootstrap/javascript.html#transitions
4
- * ===================================================
5
- * Copyright 2012 Twitter, Inc.
6
- *
7
- * Licensed under the Apache License, Version 2.0 (the "License");
8
- * you may not use this file except in compliance with the License.
9
- * You may obtain a copy of the License at
10
- *
11
- * http://www.apache.org/licenses/LICENSE-2.0
12
- *
13
- * Unless required by applicable law or agreed to in writing, software
14
- * distributed under the License is distributed on an "AS IS" BASIS,
15
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- * See the License for the specific language governing permissions and
17
- * limitations under the License.
18
- * ========================================================== */
19
-
20
-!function( $ ) {
21
-
22
-  $(function () {
23
-
24
-    "use strict"
25
-
26
-    /* CSS TRANSITION SUPPORT (https://gist.github.com/373874)
27
-     * ======================================================= */
28
-
29
-    $.support.transition = (function () {
30
-      var thisBody = document.body || document.documentElement
31
-        , thisStyle = thisBody.style
32
-        , support = thisStyle.transition !== undefined || thisStyle.WebkitTransition !== undefined || thisStyle.MozTransition !== undefined || thisStyle.MsTransition !== undefined || thisStyle.OTransition !== undefined
33
-
34
-      return support && {
35
-        end: (function () {
36
-          var transitionEnd = "TransitionEnd"
37
-          if ( $.browser.webkit ) {
38
-          	transitionEnd = "webkitTransitionEnd"
39
-          } else if ( $.browser.mozilla ) {
40
-          	transitionEnd = "transitionend"
41
-          } else if ( $.browser.opera ) {
42
-          	transitionEnd = "oTransitionEnd"
43
-          }
44
-          return transitionEnd
45
-        }())
46
-      }
47
-    })()
48
-
49
-  })
50
-  
51
-}( window.jQuery )
52
-/* ==========================================================
53
- * bootstrap-alert.js v2.0.0
54
- * http://twitter.github.com/bootstrap/javascript.html#alerts
55
- * ==========================================================
56
- * Copyright 2012 Twitter, Inc.
57
- *
58
- * Licensed under the Apache License, Version 2.0 (the "License");
59
- * you may not use this file except in compliance with the License.
60
- * You may obtain a copy of the License at
61
- *
62
- * http://www.apache.org/licenses/LICENSE-2.0
63
- *
64
- * Unless required by applicable law or agreed to in writing, software
65
- * distributed under the License is distributed on an "AS IS" BASIS,
66
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
67
- * See the License for the specific language governing permissions and
68
- * limitations under the License.
69
- * ========================================================== */
70
-
71
-
72
-!function( $ ){
73
-
74
-  "use strict"
75
-
76
- /* ALERT CLASS DEFINITION
77
-  * ====================== */
78
-
79
-  var dismiss = '[data-dismiss="alert"]'
80
-    , Alert = function ( el ) {
81
-        $(el).on('click', dismiss, this.close)
82
-      }
83
-
84
-  Alert.prototype = {
85
-
86
-    constructor: Alert
87
-
88
-  , close: function ( e ) {
89
-      var $this = $(this)
90
-        , selector = $this.attr('data-target')
91
-        , $parent
92
-
93
-      if (!selector) {
94
-        selector = $this.attr('href')
95
-        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
96
-      }
97
-
98
-      $parent = $(selector)
99
-      $parent.trigger('close')
100
-
101
-      e && e.preventDefault()
102
-
103
-      $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent())
104
-
105
-      $parent.removeClass('in')
106
-
107
-      function removeElement() {
108
-        $parent.remove()
109
-        $parent.trigger('closed')
110
-      }
111
-
112
-      $.support.transition && $parent.hasClass('fade') ?
113
-        $parent.on($.support.transition.end, removeElement) :
114
-        removeElement()
115
-    }
116
-
117
-  }
118
-
119
-
120
- /* ALERT PLUGIN DEFINITION
121
-  * ======================= */
122
-
123
-  $.fn.alert = function ( option ) {
124
-    return this.each(function () {
125
-      var $this = $(this)
126
-        , data = $this.data('alert')
127
-      if (!data) $this.data('alert', (data = new Alert(this)))
128
-      if (typeof option == 'string') data[option].call($this)
129
-    })
130
-  }
131
-
132
-  $.fn.alert.Constructor = Alert
133
-
134
-
135
- /* ALERT DATA-API
136
-  * ============== */
137
-
138
-  $(function () {
139
-    $('body').on('click.alert.data-api', dismiss, Alert.prototype.close)
140
-  })
141
-
142
-}( window.jQuery )
143
-/* ============================================================
144
- * bootstrap-button.js v2.0.0
145
- * http://twitter.github.com/bootstrap/javascript.html#buttons
146
- * ============================================================
147
- * Copyright 2012 Twitter, Inc.
148
- *
149
- * Licensed under the Apache License, Version 2.0 (the "License");
150
- * you may not use this file except in compliance with the License.
151
- * You may obtain a copy of the License at
152
- *
153
- * http://www.apache.org/licenses/LICENSE-2.0
154
- *
155
- * Unless required by applicable law or agreed to in writing, software
156
- * distributed under the License is distributed on an "AS IS" BASIS,
157
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
158
- * See the License for the specific language governing permissions and
159
- * limitations under the License.
160
- * ============================================================ */
161
-
162
-!function( $ ){
163
-
164
-  "use strict"
165
-
166
- /* BUTTON PUBLIC CLASS DEFINITION
167
-  * ============================== */
168
-
169
-  var Button = function ( element, options ) {
170
-    this.$element = $(element)
171
-    this.options = $.extend({}, $.fn.button.defaults, options)
172
-  }
173
-
174
-  Button.prototype = {
175
-
176
-      constructor: Button
177
-
178
-    , setState: function ( state ) {
179
-        var d = 'disabled'
180
-          , $el = this.$element
181
-          , data = $el.data()
182
-          , val = $el.is('input') ? 'val' : 'html'
183
-
184
-        state = state + 'Text'
185
-        data.resetText || $el.data('resetText', $el[val]())
186
-
187
-        $el[val](data[state] || this.options[state])
188
-
189
-        // push to event loop to allow forms to submit
190
-        setTimeout(function () {
191
-          state == 'loadingText' ?
192
-            $el.addClass(d).attr(d, d) :
193
-            $el.removeClass(d).removeAttr(d)
194
-        }, 0)
195
-      }
196
-
197
-    , toggle: function () {
198
-        var $parent = this.$element.parent('[data-toggle="buttons-radio"]')
199
-
200
-        $parent && $parent
201
-          .find('.active')
202
-          .removeClass('active')
203
-
204
-        this.$element.toggleClass('active')
205
-      }
206
-
207
-  }
208
-
209
-
210
- /* BUTTON PLUGIN DEFINITION
211
-  * ======================== */
212
-
213
-  $.fn.button = function ( option ) {
214
-    return this.each(function () {
215
-      var $this = $(this)
216
-        , data = $this.data('button')
217
-        , options = typeof option == 'object' && option
218
-      if (!data) $this.data('button', (data = new Button(this, options)))
219
-      if (option == 'toggle') data.toggle()
220
-      else if (option) data.setState(option)
221
-    })
222
-  }
223
-
224
-  $.fn.button.defaults = {
225
-    loadingText: 'loading...'
226
-  }
227
-
228
-  $.fn.button.Constructor = Button
229
-
230
-
231
- /* BUTTON DATA-API
232
-  * =============== */
233
-
234
-  $(function () {
235
-    $('body').on('click.button.data-api', '[data-toggle^=button]', function ( e ) {
236
-      $(e.target).button('toggle')
237
-    })
238
-  })
239
-
240
-}( window.jQuery )
241
-/* ==========================================================
242
- * bootstrap-carousel.js v2.0.0
243
- * http://twitter.github.com/bootstrap/javascript.html#carousel
244
- * ==========================================================
245
- * Copyright 2012 Twitter, Inc.
246
- *
247
- * Licensed under the Apache License, Version 2.0 (the "License");
248
- * you may not use this file except in compliance with the License.
249
- * You may obtain a copy of the License at
250
- *
251
- * http://www.apache.org/licenses/LICENSE-2.0
252
- *
253
- * Unless required by applicable law or agreed to in writing, software
254
- * distributed under the License is distributed on an "AS IS" BASIS,
255
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
256
- * See the License for the specific language governing permissions and
257
- * limitations under the License.
258
- * ========================================================== */
259
-
260
-
261
-!function( $ ){
262
-
263
-  "use strict"
264
-
265
- /* CAROUSEL CLASS DEFINITION
266
-  * ========================= */
267
-
268
-  var Carousel = function (element, options) {
269
-    this.$element = $(element)
270
-    this.options = $.extend({}, $.fn.carousel.defaults, options)
271
-    this.options.slide && this.slide(this.options.slide)
272
-  }
273
-
274
-  Carousel.prototype = {
275
-
276
-    cycle: function () {
277
-      this.interval = setInterval($.proxy(this.next, this), this.options.interval)
278
-      return this
279
-    }
280
-
281
-  , to: function (pos) {
282
-      var $active = this.$element.find('.active')
283
-        , children = $active.parent().children()
284
-        , activePos = children.index($active)
285
-        , that = this
286
-
287
-      if (pos > (children.length - 1) || pos < 0) return
288
-
289
-      if (this.sliding) {
290
-        return this.$element.one('slid', function () {
291
-          that.to(pos)
292
-        })
293
-      }
294
-
295
-      if (activePos == pos) {
296
-        return this.pause().cycle()
297
-      }
298
-
299
-      return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos]))
300
-    }
301
-
302
-  , pause: function () {
303
-      clearInterval(this.interval)
304
-      return this
305
-    }
306
-
307
-  , next: function () {
308
-      if (this.sliding) return
309
-      return this.slide('next')
310
-    }
311
-
312
-  , prev: function () {
313
-      if (this.sliding) return
314
-      return this.slide('prev')
315
-    }
316
-
317
-  , slide: function (type, next) {
318
-      var $active = this.$element.find('.active')
319
-        , $next = next || $active[type]()
320
-        , isCycling = this.interval
321
-        , direction = type == 'next' ? 'left' : 'right'
322
-        , fallback  = type == 'next' ? 'first' : 'last'
323
-        , that = this
324
-
325
-      this.sliding = true
326
-
327
-      isCycling && this.pause()
328
-
329
-      $next = $next.length ? $next : this.$element.find('.item')[fallback]()
330
-
331
-      if (!$.support.transition && this.$element.hasClass('slide')) {
332
-        this.$element.trigger('slide')
333
-        $active.removeClass('active')
334
-        $next.addClass('active')
335
-        this.sliding = false
336
-        this.$element.trigger('slid')
337
-      } else {
338
-        $next.addClass(type)
339
-        $next[0].offsetWidth // force reflow
340
-        $active.addClass(direction)
341
-        $next.addClass(direction)
342
-        this.$element.trigger('slide')
343
-        this.$element.one($.support.transition.end, function () {
344
-          $next.removeClass([type, direction].join(' ')).addClass('active')
345
-          $active.removeClass(['active', direction].join(' '))
346
-          that.sliding = false
347
-          setTimeout(function () { that.$element.trigger('slid') }, 0)
348
-        })
349
-      }
350
-
351
-      isCycling && this.cycle()
352
-
353
-      return this
354
-    }
355
-
356
-  }
357
-
358
-
359
- /* CAROUSEL PLUGIN DEFINITION
360
-  * ========================== */
361
-
362
-  $.fn.carousel = function ( option ) {
363
-    return this.each(function () {
364
-      var $this = $(this)
365
-        , data = $this.data('carousel')
366
-        , options = typeof option == 'object' && option
367
-      if (!data) $this.data('carousel', (data = new Carousel(this, options)))
368
-      if (typeof option == 'number') data.to(option)
369
-      else if (typeof option == 'string' || (option = options.slide)) data[option]()
370
-      else data.cycle()
371
-    })
372
-  }
373
-
374
-  $.fn.carousel.defaults = {
375
-    interval: 5000
376
-  }
377
-
378
-  $.fn.carousel.Constructor = Carousel
379
-
380
-
381
- /* CAROUSEL DATA-API
382
-  * ================= */
383
-
384
-  $(function () {
385
-    $('body').on('click.carousel.data-api', '[data-slide]', function ( e ) {
386
-      var $this = $(this), href
387
-        , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
388
-        , options = !$target.data('modal') && $.extend({}, $target.data(), $this.data())
389
-      $target.carousel(options)
390
-      e.preventDefault()
391
-    })
392
-  })
393
-
394
-}( window.jQuery )
395
-/* =============================================================
396
- * bootstrap-collapse.js v2.0.0
397
- * http://twitter.github.com/bootstrap/javascript.html#collapse
398
- * =============================================================
399
- * Copyright 2012 Twitter, Inc.
400
- *
401
- * Licensed under the Apache License, Version 2.0 (the "License");
402
- * you may not use this file except in compliance with the License.
403
- * You may obtain a copy of the License at
404
- *
405
- * http://www.apache.org/licenses/LICENSE-2.0
406
- *
407
- * Unless required by applicable law or agreed to in writing, software
408
- * distributed under the License is distributed on an "AS IS" BASIS,
409
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
410
- * See the License for the specific language governing permissions and
411
- * limitations under the License.
412
- * ============================================================ */
413
-
414
-!function( $ ){
415
-
416
-  "use strict"
417
-
418
-  var Collapse = function ( element, options ) {
419
-  	this.$element = $(element)
420
-    this.options = $.extend({}, $.fn.collapse.defaults, options)
421
-
422
-    if (this.options["parent"]) {
423
-      this.$parent = $(this.options["parent"])
424
-    }
425
-
426
-    this.options.toggle && this.toggle()
427
-  }
428
-
429
-  Collapse.prototype = {
430
-
431
-    constructor: Collapse
432
-
433
-  , dimension: function () {
434
-      var hasWidth = this.$element.hasClass('width')
435
-      return hasWidth ? 'width' : 'height'
436
-    }
437
-
438
-  , show: function () {
439
-      var dimension = this.dimension()
440
-        , scroll = $.camelCase(['scroll', dimension].join('-'))
441
-        , actives = this.$parent && this.$parent.find('.in')
442
-        , hasData
443
-
444
-      if (actives && actives.length) {
445
-        hasData = actives.data('collapse')
446
-        actives.collapse('hide')
447
-        hasData || actives.data('collapse', null)
448
-      }
449
-
450
-      this.$element[dimension](0)
451
-      this.transition('addClass', 'show', 'shown')
452
-      this.$element[dimension](this.$element[0][scroll])
453
-
454
-    }
455
-
456
-  , hide: function () {
457
-      var dimension = this.dimension()
458
-      this.reset(this.$element[dimension]())
459
-      this.transition('removeClass', 'hide', 'hidden')
460
-      this.$element[dimension](0)
461
-    }
462
-
463
-  , reset: function ( size ) {
464
-      var dimension = this.dimension()
465
-
466
-      this.$element
467
-        .removeClass('collapse')
468
-        [dimension](size || 'auto')
469
-        [0].offsetWidth
470
-
471
-      this.$element.addClass('collapse')
472
-    }
473
-
474
-  , transition: function ( method, startEvent, completeEvent ) {
475
-      var that = this
476
-        , complete = function () {
477
-            if (startEvent == 'show') that.reset()
478
-            that.$element.trigger(completeEvent)
479
-          }
480
-
481
-      this.$element
482
-        .trigger(startEvent)
483
-        [method]('in')
484
-
485
-      $.support.transition && this.$element.hasClass('collapse') ?
486
-        this.$element.one($.support.transition.end, complete) :
487
-        complete()
488
-  	}
489
-
490
-  , toggle: function () {
491
-      this[this.$element.hasClass('in') ? 'hide' : 'show']()
492
-  	}
493
-
494
-  }
495
-
496
-  /* COLLAPSIBLE PLUGIN DEFINITION
497
-  * ============================== */
498
-
499
-  $.fn.collapse = function ( option ) {
500
-    return this.each(function () {
501
-      var $this = $(this)
502
-        , data = $this.data('collapse')
503
-        , options = typeof option == 'object' && option
504
-      if (!data) $this.data('collapse', (data = new Collapse(this, options)))
505
-      if (typeof option == 'string') data[option]()
506
-    })
507
-  }
508
-
509
-  $.fn.collapse.defaults = {
510
-    toggle: true
511
-  }
512
-
513
-  $.fn.collapse.Constructor = Collapse
514
-
515
-
516
- /* COLLAPSIBLE DATA-API
517
-  * ==================== */
518
-
519
-  $(function () {
520
-    $('body').on('click.collapse.data-api', '[data-toggle=collapse]', function ( e ) {
521
-      var $this = $(this), href
522
-        , target = $this.attr('data-target')
523
-          || e.preventDefault()
524
-          || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7
525
-        , option = $(target).data('collapse') ? 'toggle' : $this.data()
526
-      $(target).collapse(option)
527
-    })
528
-  })
529
-
530
-}( window.jQuery )
531
-/* ============================================================
532
- * bootstrap-dropdown.js v2.0.0
533
- * http://twitter.github.com/bootstrap/javascript.html#dropdowns
534
- * ============================================================
535
- * Copyright 2012 Twitter, Inc.
536
- *
537
- * Licensed under the Apache License, Version 2.0 (the "License");
538
- * you may not use this file except in compliance with the License.
539
- * You may obtain a copy of the License at
540
- *
541
- * http://www.apache.org/licenses/LICENSE-2.0
542
- *
543
- * Unless required by applicable law or agreed to in writing, software
544
- * distributed under the License is distributed on an "AS IS" BASIS,
545
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
546
- * See the License for the specific language governing permissions and
547
- * limitations under the License.
548
- * ============================================================ */
549
-
550
-
551
-!function( $ ){
552
-
553
-  "use strict"
554
-
555
- /* DROPDOWN CLASS DEFINITION
556
-  * ========================= */
557
-
558
-  var toggle = '[data-toggle="dropdown"]'
559
-    , Dropdown = function ( element ) {
560
-        var $el = $(element).on('click.dropdown.data-api', this.toggle)
561
-        $('html').on('click.dropdown.data-api', function () {
562
-          $el.parent().removeClass('open')
563
-        })
564
-      }
565
-
566
-  Dropdown.prototype = {
567
-
568
-    constructor: Dropdown
569
-
570
-  , toggle: function ( e ) {
571
-      var $this = $(this)
572
-        , selector = $this.attr('data-target')
573
-        , $parent
574
-        , isActive
575
-
576
-      if (!selector) {
577
-        selector = $this.attr('href')
578
-        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
579
-      }
580
-
581
-      $parent = $(selector)
582
-      $parent.length || ($parent = $this.parent())
583
-
584
-      isActive = $parent.hasClass('open')
585
-
586
-      clearMenus()
587
-      !isActive && $parent.toggleClass('open')
588
-
589
-      return false
590
-    }
591
-
592
-  }
593
-
594
-  function clearMenus() {
595
-    $(toggle).parent().removeClass('open')
596
-  }
597
-
598
-
599
-  /* DROPDOWN PLUGIN DEFINITION
600
-   * ========================== */
601
-
602
-  $.fn.dropdown = function ( option ) {
603
-    return this.each(function () {
604
-      var $this = $(this)
605
-        , data = $this.data('dropdown')
606
-      if (!data) $this.data('dropdown', (data = new Dropdown(this)))
607
-      if (typeof option == 'string') data[option].call($this)
608
-    })
609
-  }
610
-
611
-  $.fn.dropdown.Constructor = Dropdown
612
-
613
-
614
-  /* APPLY TO STANDARD DROPDOWN ELEMENTS
615
-   * =================================== */
616
-
617
-  $(function () {
618
-    $('html').on('click.dropdown.data-api', clearMenus)
619
-    $('body').on('click.dropdown.data-api', toggle, Dropdown.prototype.toggle)
620
-  })
621
-
622
-}( window.jQuery )
623
-/* =========================================================
624
- * bootstrap-modal.js v2.0.0
625
- * http://twitter.github.com/bootstrap/javascript.html#modals
626
- * =========================================================
627
- * Copyright 2012 Twitter, Inc.
628
- *
629
- * Licensed under the Apache License, Version 2.0 (the "License");
630
- * you may not use this file except in compliance with the License.
631
- * You may obtain a copy of the License at
632
- *
633
- * http://www.apache.org/licenses/LICENSE-2.0
634
- *
635
- * Unless required by applicable law or agreed to in writing, software
636
- * distributed under the License is distributed on an "AS IS" BASIS,
637
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
638
- * See the License for the specific language governing permissions and
639
- * limitations under the License.
640
- * ========================================================= */
641
-
642
-
643
-!function( $ ){
644
-
645
-  "use strict"
646
-
647
- /* MODAL CLASS DEFINITION
648
-  * ====================== */
649
-
650
-  var Modal = function ( content, options ) {
651
-    this.options = $.extend({}, $.fn.modal.defaults, options)
652
-    this.$element = $(content)
653
-      .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this))
654
-  }
655
-
656
-  Modal.prototype = {
657
-
658
-      constructor: Modal
659
-
660
-    , toggle: function () {
661
-        return this[!this.isShown ? 'show' : 'hide']()
662
-      }
663
-
664
-    , show: function () {
665
-        var that = this
666
-
667
-        if (this.isShown) return
668
-
669
-        $('body').addClass('modal-open')
670
-
671
-        this.isShown = true
672
-        this.$element.trigger('show')
673
-
674
-        escape.call(this)
675
-        backdrop.call(this, function () {
676
-          var transition = $.support.transition && that.$element.hasClass('fade')
677
-
678
-          !that.$element.parent().length && that.$element.appendTo(document.body) //don't move modals dom position
679
-
680
-          that.$element
681
-            .show()
682
-
683
-          if (transition) {
684
-            that.$element[0].offsetWidth // force reflow
685
-          }
686
-
687
-          that.$element.addClass('in')
688
-
689
-          transition ?
690
-            that.$element.one($.support.transition.end, function () { that.$element.trigger('shown') }) :
691
-            that.$element.trigger('shown')
692
-
693
-        })
694
-      }
695
-
696
-    , hide: function ( e ) {
697
-        e && e.preventDefault()
698
-
699
-        if (!this.isShown) return
700
-
701
-        var that = this
702
-        this.isShown = false
703
-
704
-        $('body').removeClass('modal-open')
705
-
706
-        escape.call(this)
707
-
708
-        this.$element
709
-          .trigger('hide')
710
-          .removeClass('in')
711
-
712
-        $.support.transition && this.$element.hasClass('fade') ?
713
-          hideWithTransition.call(this) :
714
-          hideModal.call(this)
715
-      }
716
-
717
-  }
718
-
719
-
720
- /* MODAL PRIVATE METHODS
721
-  * ===================== */
722
-
723
-  function hideWithTransition() {
724
-    var that = this
725
-      , timeout = setTimeout(function () {
726
-          that.$element.off($.support.transition.end)
727
-          hideModal.call(that)
728
-        }, 500)
729
-
730
-    this.$element.one($.support.transition.end, function () {
731
-      clearTimeout(timeout)
732
-      hideModal.call(that)
733
-    })
734
-  }
735
-
736
-  function hideModal( that ) {
737
-    this.$element
738
-      .hide()
739
-      .trigger('hidden')
740
-
741
-    backdrop.call(this)
742
-  }
743
-
744
-  function backdrop( callback ) {
745
-    var that = this
746
-      , animate = this.$element.hasClass('fade') ? 'fade' : ''
747
-
748
-    if (this.isShown && this.options.backdrop) {
749
-      var doAnimate = $.support.transition && animate
750
-
751
-      this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />')
752
-        .appendTo(document.body)
753
-
754
-      if (this.options.backdrop != 'static') {
755
-        this.$backdrop.click($.proxy(this.hide, this))
756
-      }
757
-
758
-      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow
759
-
760
-      this.$backdrop.addClass('in')
761
-
762
-      doAnimate ?
763
-        this.$backdrop.one($.support.transition.end, callback) :
764
-        callback()
765
-
766
-    } else if (!this.isShown && this.$backdrop) {
767
-      this.$backdrop.removeClass('in')
768
-
769
-      $.support.transition && this.$element.hasClass('fade')?
770
-        this.$backdrop.one($.support.transition.end, $.proxy(removeBackdrop, this)) :
771
-        removeBackdrop.call(this)
772
-
773
-    } else if (callback) {
774
-      callback()
775
-    }
776
-  }
777
-
778
-  function removeBackdrop() {
779
-    this.$backdrop.remove()
780
-    this.$backdrop = null
781
-  }
782
-
783
-  function escape() {
784
-    var that = this
785
-    if (this.isShown && this.options.keyboard) {
786
-      $(document).on('keyup.dismiss.modal', function ( e ) {
787
-        e.which == 27 && that.hide()
788
-      })
789
-    } else if (!this.isShown) {
790
-      $(document).off('keyup.dismiss.modal')
791
-    }
792
-  }
793
-
794
-
795
- /* MODAL PLUGIN DEFINITION
796
-  * ======================= */
797
-
798
-  $.fn.modal = function ( option ) {
799
-    return this.each(function () {
800
-      var $this = $(this)
801
-        , data = $this.data('modal')
802
-        , options = typeof option == 'object' && option
803
-      if (!data) $this.data('modal', (data = new Modal(this, options)))
804
-      if (typeof option == 'string') data[option]()
805
-      else data.show()
806
-    })
807
-  }
808
-
809
-  $.fn.modal.defaults = {
810
-      backdrop: true
811
-    , keyboard: true
812
-  }
813
-
814
-  $.fn.modal.Constructor = Modal
815
-
816
-
817
- /* MODAL DATA-API
818
-  * ============== */
819
-
820
-  $(function () {
821
-    $('body').on('click.modal.data-api', '[data-toggle="modal"]', function ( e ) {
822
-      var $this = $(this), href
823
-        , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
824
-        , option = $target.data('modal') ? 'toggle' : $.extend({}, $target.data(), $this.data())
825
-
826
-      e.preventDefault()
827
-      $target.modal(option)
828
-    })
829
-  })
830
-
831
-}( window.jQuery )
832
-/* ===========================================================
833
- * bootstrap-tooltip.js v2.0.0
834
- * http://twitter.github.com/bootstrap/javascript.html#tooltips
835
- * Inspired by the original jQuery.tipsy by Jason Frame
836
- * ===========================================================
837
- * Copyright 2012 Twitter, Inc.
838
- *
839
- * Licensed under the Apache License, Version 2.0 (the "License");
840
- * you may not use this file except in compliance with the License.
841
- * You may obtain a copy of the License at
842
- *
843
- * http://www.apache.org/licenses/LICENSE-2.0
844
- *
845
- * Unless required by applicable law or agreed to in writing, software
846
- * distributed under the License is distributed on an "AS IS" BASIS,
847
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
848
- * See the License for the specific language governing permissions and
849
- * limitations under the License.
850
- * ========================================================== */
851
-
852
-!function( $ ) {
853
-
854
-  "use strict"
855
-
856
- /* TOOLTIP PUBLIC CLASS DEFINITION
857
-  * =============================== */
858
-
859
-  var Tooltip = function ( element, options ) {
860
-    this.init('tooltip', element, options)
861
-  }
862
-
863
-  Tooltip.prototype = {
864
-
865
-    constructor: Tooltip
866
-
867
-  , init: function ( type, element, options ) {
868
-      var eventIn
869
-        , eventOut
870
-
871
-      this.type = type
872
-      this.$element = $(element)
873
-      this.options = this.getOptions(options)
874
-      this.enabled = true
875
-
876
-      if (this.options.trigger != 'manual') {
877
-        eventIn  = this.options.trigger == 'hover' ? 'mouseenter' : 'focus'
878
-        eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur'
879
-        this.$element.on(eventIn, this.options.selector, $.proxy(this.enter, this))
880
-        this.$element.on(eventOut, this.options.selector, $.proxy(this.leave, this))
881
-      }
882
-
883
-      this.options.selector ?
884
-        (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
885
-        this.fixTitle()
886
-    }
887
-
888
-  , getOptions: function ( options ) {
889
-      options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data())
890
-
891
-      if (options.delay && typeof options.delay == 'number') {
892
-        options.delay = {
893
-          show: options.delay
894
-        , hide: options.delay
895
-        }
896
-      }
897
-
898
-      return options
899
-    }
900
-
901
-  , enter: function ( e ) {
902
-      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
903
-
904
-      if (!self.options.delay || !self.options.delay.show) {
905
-        self.show()
906
-      } else {
907
-        self.hoverState = 'in'
908
-        setTimeout(function() {
909
-          if (self.hoverState == 'in') {
910
-            self.show()
911
-          }
912
-        }, self.options.delay.show)
913
-      }
914
-    }
915
-
916
-  , leave: function ( e ) {
917
-      var self = $(e.currentTarget)[this.type](this._options).data(this.type)
918
-
919
-      if (!self.options.delay || !self.options.delay.hide) {
920
-        self.hide()
921
-      } else {
922
-        self.hoverState = 'out'
923
-        setTimeout(function() {
924
-          if (self.hoverState == 'out') {
925
-            self.hide()
926
-          }
927
-        }, self.options.delay.hide)
928
-      }
929
-    }
930
-
931
-  , show: function () {
932
-      var $tip
933
-        , inside
934
-        , pos
935
-        , actualWidth
936
-        , actualHeight
937
-        , placement
938
-        , tp
939
-
940
-      if (this.hasContent() && this.enabled) {
941
-        $tip = this.tip()
942
-        this.setContent()
943
-
944
-        if (this.options.animation) {
945
-          $tip.addClass('fade')
946
-        }
947
-
948
-        placement = typeof this.options.placement == 'function' ?
949
-          this.options.placement.call(this, $tip[0], this.$element[0]) :
950
-          this.options.placement
951
-
952
-        inside = /in/.test(placement)
953
-
954
-        $tip
955
-          .remove()
956
-          .css({ top: 0, left: 0, display: 'block' })
957
-          .appendTo(inside ? this.$element : document.body)
958
-
959
-        pos = this.getPosition(inside)
960
-
961
-        actualWidth = $tip[0].offsetWidth
962
-        actualHeight = $tip[0].offsetHeight
963
-
964
-        switch (inside ? placement.split(' ')[1] : placement) {
965
-          case 'bottom':
966
-            tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
967
-            break
968
-          case 'top':
969
-            tp = {top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}
970
-            break
971
-          case 'left':
972
-            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}
973
-            break
974
-          case 'right':
975
-            tp = {top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}
976
-            break
977
-        }
978
-
979
-        $tip
980
-          .css(tp)
981
-          .addClass(placement)
982
-          .addClass('in')
983
-      }
984
-    }
985
-
986
-  , setContent: function () {
987
-      var $tip = this.tip()
988
-      $tip.find('.tooltip-inner').html(this.getTitle())
989
-      $tip.removeClass('fade in top bottom left right')
990
-    }
991
-
992
-  , hide: function () {
993
-      var that = this
994
-        , $tip = this.tip()
995
-
996
-      $tip.removeClass('in')
997
-
998
-      function removeWithAnimation() {
999
-        var timeout = setTimeout(function () {
1000
-          $tip.off($.support.transition.end).remove()
1001
-        }, 500)
1002
-
1003
-        $tip.one($.support.transition.end, function () {
1004
-          clearTimeout(timeout)
1005
-          $tip.remove()
1006
-        })
1007
-      }
1008
-
1009
-      $.support.transition && this.$tip.hasClass('fade') ?
1010
-        removeWithAnimation() :
1011
-        $tip.remove()
1012
-    }
1013
-
1014
-  , fixTitle: function () {
1015
-      var $e = this.$element
1016
-      if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
1017
-        $e.attr('data-original-title', $e.attr('title') || '').removeAttr('title')
1018
-      }
1019
-    }
1020
-
1021
-  , hasContent: function () {
1022
-      return this.getTitle()
1023
-    }
1024
-
1025
-  , getPosition: function (inside) {
1026
-      return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), {
1027
-        width: this.$element[0].offsetWidth
1028
-      , height: this.$element[0].offsetHeight
1029
-      })
1030
-    }
1031
-
1032
-  , getTitle: function () {
1033
-      var title
1034
-        , $e = this.$element
1035
-        , o = this.options
1036
-
1037
-      title = $e.attr('data-original-title')
1038
-        || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)
1039
-
1040
-      title = title.toString().replace(/(^\s*|\s*$)/, "")
1041
-
1042
-      return title
1043
-    }
1044
-
1045
-  , tip: function () {
1046
-      return this.$tip = this.$tip || $(this.options.template)
1047
-    }
1048
-
1049
-  , validate: function () {
1050
-      if (!this.$element[0].parentNode) {
1051
-        this.hide()
1052
-        this.$element = null
1053
-        this.options = null
1054
-      }
1055
-    }
1056
-
1057
-  , enable: function () {
1058
-      this.enabled = true
1059
-    }
1060
-
1061
-  , disable: function () {
1062
-      this.enabled = false
1063
-    }
1064
-
1065
-  , toggleEnabled: function () {
1066
-      this.enabled = !this.enabled
1067
-    }
1068
-
1069
-  , toggle: function () {
1070
-      this[this.tip().hasClass('in') ? 'hide' : 'show']()
1071
-    }
1072
-
1073
-  }
1074
-
1075
-
1076
- /* TOOLTIP PLUGIN DEFINITION
1077
-  * ========================= */
1078
-
1079
-  $.fn.tooltip = function ( option ) {
1080
-    return this.each(function () {
1081
-      var $this = $(this)
1082
-        , data = $this.data('tooltip')
1083
-        , options = typeof option == 'object' && option
1084
-      if (!data) $this.data('tooltip', (data = new Tooltip(this, options)))
1085
-      if (typeof option == 'string') data[option]()
1086
-    })
1087
-  }
1088
-
1089
-  $.fn.tooltip.Constructor = Tooltip
1090
-
1091
-  $.fn.tooltip.defaults = {
1092
-    animation: true
1093
-  , delay: 0
1094
-  , selector: false
1095
-  , placement: 'top'
1096
-  , trigger: 'hover'
1097
-  , title: ''
1098
-  , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
1099
-  }
1100
-
1101
-}( window.jQuery )
1102
-/* ===========================================================
1103
- * bootstrap-popover.js v2.0.0
1104
- * http://twitter.github.com/bootstrap/javascript.html#popovers
1105
- * ===========================================================
1106
- * Copyright 2012 Twitter, Inc.
1107
- *
1108
- * Licensed under the Apache License, Version 2.0 (the "License");
1109
- * you may not use this file except in compliance with the License.
1110
- * You may obtain a copy of the License at
1111
- *
1112
- * http://www.apache.org/licenses/LICENSE-2.0
1113
- *
1114
- * Unless required by applicable law or agreed to in writing, software
1115
- * distributed under the License is distributed on an "AS IS" BASIS,
1116
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1117
- * See the License for the specific language governing permissions and
1118
- * limitations under the License.
1119
- * =========================================================== */
1120
-
1121
-
1122
-!function( $ ) {
1123
-
1124
- "use strict"
1125
-
1126
-  var Popover = function ( element, options ) {
1127
-    this.init('popover', element, options)
1128
-  }
1129
-
1130
-  /* NOTE: POPOVER EXTENDS BOOTSTRAP-TOOLTIP.js
1131
-     ========================================== */
1132
-
1133
-  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype, {
1134
-
1135
-    constructor: Popover
1136
-
1137
-  , setContent: function () {
1138
-      var $tip = this.tip()
1139
-        , title = this.getTitle()
1140
-        , content = this.getContent()
1141
-
1142
-      $tip.find('.popover-title')[ $.type(title) == 'object' ? 'append' : 'html' ](title)
1143
-      $tip.find('.popover-content > *')[ $.type(content) == 'object' ? 'append' : 'html' ](content)
1144
-
1145
-      $tip.removeClass('fade top bottom left right in')
1146
-    }
1147
-
1148
-  , hasContent: function () {
1149
-      return this.getTitle() || this.getContent()
1150
-    }
1151
-
1152
-  , getContent: function () {
1153
-      var content
1154
-        , $e = this.$element
1155
-        , o = this.options
1156
-
1157
-      content = $e.attr('data-content')
1158
-        || (typeof o.content == 'function' ? o.content.call($e[0]) :  o.content)
1159
-
1160
-      content = content.toString().replace(/(^\s*|\s*$)/, "")
1161
-
1162
-      return content
1163
-    }
1164
-
1165
-  , tip: function() {
1166
-      if (!this.$tip) {
1167
-        this.$tip = $(this.options.template)
1168
-      }
1169
-      return this.$tip
1170
-    }
1171
-
1172
-  })
1173
-
1174
-
1175
- /* POPOVER PLUGIN DEFINITION
1176
-  * ======================= */
1177
-
1178
-  $.fn.popover = function ( option ) {
1179
-    return this.each(function () {
1180
-      var $this = $(this)
1181
-        , data = $this.data('popover')
1182
-        , options = typeof option == 'object' && option
1183
-      if (!data) $this.data('popover', (data = new Popover(this, options)))
1184
-      if (typeof option == 'string') data[option]()
1185
-    })
1186
-  }
1187
-
1188
-  $.fn.popover.Constructor = Popover
1189
-
1190
-  $.fn.popover.defaults = $.extend({} , $.fn.tooltip.defaults, {
1191
-    placement: 'right'
1192
-  , content: ''
1193
-  , template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'
1194
-  })
1195
-
1196
-}( window.jQuery )
1197
-/* =============================================================
1198
- * bootstrap-scrollspy.js v2.0.0
1199
- * http://twitter.github.com/bootstrap/javascript.html#scrollspy
1200
- * =============================================================
1201
- * Copyright 2012 Twitter, Inc.
1202
- *
1203
- * Licensed under the Apache License, Version 2.0 (the "License");
1204
- * you may not use this file except in compliance with the License.
1205
- * You may obtain a copy of the License at
1206
- *
1207
- * http://www.apache.org/licenses/LICENSE-2.0
1208
- *
1209
- * Unless required by applicable law or agreed to in writing, software
1210
- * distributed under the License is distributed on an "AS IS" BASIS,
1211
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1212
- * See the License for the specific language governing permissions and
1213
- * limitations under the License.
1214
- * ============================================================== */
1215
-
1216
-!function ( $ ) {
1217
-
1218
-  "use strict"
1219
-
1220
-  /* SCROLLSPY CLASS DEFINITION
1221
-   * ========================== */
1222
-
1223
-  function ScrollSpy( element, options) {
1224
-    var process = $.proxy(this.process, this)
1225
-      , $element = $(element).is('body') ? $(window) : $(element)
1226
-      , href
1227
-    this.options = $.extend({}, $.fn.scrollspy.defaults, options)
1228
-    this.$scrollElement = $element.on('scroll.scroll.data-api', process)
1229
-    this.selector = (this.options.target
1230
-      || ((href = $(element).attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
1231
-      || '') + ' .nav li > a'
1232
-    this.$body = $('body').on('click.scroll.data-api', this.selector, process)
1233
-    this.refresh()
1234
-    this.process()
1235
-  }
1236
-
1237
-  ScrollSpy.prototype = {
1238
-
1239
-      constructor: ScrollSpy
1240
-
1241
-    , refresh: function () {
1242
-        this.targets = this.$body
1243
-          .find(this.selector)
1244
-          .map(function () {
1245
-            var href = $(this).attr('href')
1246
-            return /^#\w/.test(href) && $(href).length ? href : null
1247
-          })
1248
-
1249
-        this.offsets = $.map(this.targets, function (id) {
1250
-          return $(id).position().top
1251
-        })
1252
-      }
1253
-
1254
-    , process: function () {
1255
-        var scrollTop = this.$scrollElement.scrollTop() + this.options.offset
1256
-          , offsets = this.offsets
1257
-          , targets = this.targets
1258
-          , activeTarget = this.activeTarget
1259
-          , i
1260
-
1261
-        for (i = offsets.length; i--;) {
1262
-          activeTarget != targets[i]
1263
-            && scrollTop >= offsets[i]
1264
-            && (!offsets[i + 1] || scrollTop <= offsets[i + 1])
1265
-            && this.activate( targets[i] )
1266
-        }
1267
-      }
1268
-
1269
-    , activate: function (target) {
1270
-        var active
1271
-
1272
-        this.activeTarget = target
1273
-
1274
-        this.$body
1275
-          .find(this.selector).parent('.active')
1276
-          .removeClass('active')
1277
-
1278
-        active = this.$body
1279
-          .find(this.selector + '[href="' + target + '"]')
1280
-          .parent('li')
1281
-          .addClass('active')
1282
-
1283
-        if ( active.parent('.dropdown-menu') )  {
1284
-          active.closest('li.dropdown').addClass('active')
1285
-        }
1286
-      }
1287
-
1288
-  }
1289
-
1290
-
1291
- /* SCROLLSPY PLUGIN DEFINITION
1292
-  * =========================== */
1293
-
1294
-  $.fn.scrollspy = function ( option ) {
1295
-    return this.each(function () {
1296
-      var $this = $(this)
1297
-        , data = $this.data('scrollspy')
1298
-        , options = typeof option == 'object' && option
1299
-      if (!data) $this.data('scrollspy', (data = new ScrollSpy(this, options)))
1300
-      if (typeof option == 'string') data[option]()
1301
-    })
1302
-  }
1303
-
1304
-  $.fn.scrollspy.Constructor = ScrollSpy
1305
-
1306
-  $.fn.scrollspy.defaults = {
1307
-    offset: 10
1308
-  }
1309
-
1310
-
1311
- /* SCROLLSPY DATA-API
1312
-  * ================== */
1313
-
1314
-  $(function () {
1315
-    $('[data-spy="scroll"]').each(function () {
1316
-      var $spy = $(this)
1317
-      $spy.scrollspy($spy.data())
1318
-    })
1319
-  })
1320
-
1321
-}( window.jQuery )
1322
-/* ========================================================
1323
- * bootstrap-tab.js v2.0.0
1324
- * http://twitter.github.com/bootstrap/javascript.html#tabs
1325
- * ========================================================
1326
- * Copyright 2012 Twitter, Inc.
1327
- *
1328
- * Licensed under the Apache License, Version 2.0 (the "License");
1329
- * you may not use this file except in compliance with the License.
1330
- * You may obtain a copy of the License at
1331
- *
1332
- * http://www.apache.org/licenses/LICENSE-2.0
1333
- *
1334
- * Unless required by applicable law or agreed to in writing, software
1335
- * distributed under the License is distributed on an "AS IS" BASIS,
1336
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1337
- * See the License for the specific language governing permissions and
1338
- * limitations under the License.
1339
- * ======================================================== */
1340
-
1341
-
1342
-!function( $ ){
1343
-
1344
-  "use strict"
1345
-
1346
- /* TAB CLASS DEFINITION
1347
-  * ==================== */
1348
-
1349
-  var Tab = function ( element ) {
1350
-    this.element = $(element)
1351
-  }
1352
-
1353
-  Tab.prototype = {
1354
-
1355
-    constructor: Tab
1356
-
1357
-  , show: function () {
1358
-      var $this = this.element
1359
-        , $ul = $this.closest('ul:not(.dropdown-menu)')
1360
-        , selector = $this.attr('data-target')
1361
-        , previous
1362
-        , $target
1363
-
1364
-      if (!selector) {
1365
-        selector = $this.attr('href')
1366
-        selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
1367
-      }
1368
-
1369
-      if ( $this.parent('li').hasClass('active') ) return
1370
-
1371
-      previous = $ul.find('.active a').last()[0]
1372
-
1373
-      $this.trigger({
1374
-        type: 'show'
1375
-      , relatedTarget: previous
1376
-      })
1377
-
1378
-      $target = $(selector)
1379
-
1380
-      this.activate($this.parent('li'), $ul)
1381
-      this.activate($target, $target.parent(), function () {
1382
-        $this.trigger({
1383
-          type: 'shown'
1384
-        , relatedTarget: previous
1385
-        })
1386
-      })
1387
-    }
1388
-
1389
-  , activate: function ( element, container, callback) {
1390
-      var $active = container.find('> .active')
1391
-        , transition = callback
1392
-            && $.support.transition
1393
-            && $active.hasClass('fade')
1394
-
1395
-      function next() {
1396
-        $active
1397
-          .removeClass('active')
1398
-          .find('> .dropdown-menu > .active')
1399
-          .removeClass('active')
1400
-
1401
-        element.addClass('active')
1402
-
1403
-        if (transition) {
1404
-          element[0].offsetWidth // reflow for transition
1405
-          element.addClass('in')
1406
-        } else {
1407
-          element.removeClass('fade')
1408
-        }
1409
-
1410
-        if ( element.parent('.dropdown-menu') ) {
1411
-          element.closest('li.dropdown').addClass('active')
1412
-        }
1413
-
1414
-        callback && callback()
1415
-      }
1416
-
1417
-      transition ?
1418
-        $active.one($.support.transition.end, next) :
1419
-        next()
1420
-
1421
-      $active.removeClass('in')
1422
-    }
1423
-  }
1424
-
1425
-
1426
- /* TAB PLUGIN DEFINITION
1427
-  * ===================== */
1428
-
1429
-  $.fn.tab = function ( option ) {
1430
-    return this.each(function () {
1431
-      var $this = $(this)
1432
-        , data = $this.data('tab')
1433
-      if (!data) $this.data('tab', (data = new Tab(this)))
1434
-      if (typeof option == 'string') data[option]()
1435
-    })
1436
-  }
1437
-
1438
-  $.fn.tab.Constructor = Tab
1439
-
1440
-
1441
- /* TAB DATA-API
1442
-  * ============ */
1443
-
1444
-  $(function () {
1445
-    $('body').on('click.tab.data-api', '[data-toggle="tab"], [data-toggle="pill"]', function (e) {
1446
-      e.preventDefault()
1447
-      $(this).tab('show')
1448
-    })
1449
-  })
1450
-
1451
-}( window.jQuery )
1452
-/* =============================================================
1453
- * bootstrap-typeahead.js v2.0.0
1454
- * http://twitter.github.com/bootstrap/javascript.html#typeahead
1455
- * =============================================================
1456
- * Copyright 2012 Twitter, Inc.
1457
- *
1458
- * Licensed under the Apache License, Version 2.0 (the "License");
1459
- * you may not use this file except in compliance with the License.
1460
- * You may obtain a copy of the License at
1461
- *
1462
- * http://www.apache.org/licenses/LICENSE-2.0
1463
- *
1464
- * Unless required by applicable law or agreed to in writing, software
1465
- * distributed under the License is distributed on an "AS IS" BASIS,
1466
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1467
- * See the License for the specific language governing permissions and
1468
- * limitations under the License.
1469
- * ============================================================ */
1470
-
1471
-!function( $ ){
1472
-
1473
-  "use strict"
1474
-
1475
-  var Typeahead = function ( element, options ) {
1476
-    this.$element = $(element)
1477
-    this.options = $.extend({}, $.fn.typeahead.defaults, options)
1478
-    this.matcher = this.options.matcher || this.matcher
1479
-    this.sorter = this.options.sorter || this.sorter
1480
-    this.highlighter = this.options.highlighter || this.highlighter
1481
-    this.$menu = $(this.options.menu).appendTo('body')
1482
-    this.source = this.options.source
1483
-    this.shown = false
1484
-    this.listen()
1485
-  }
1486
-
1487
-  Typeahead.prototype = {
1488
-
1489
-    constructor: Typeahead
1490
-
1491
-  , select: function () {
1492
-      var val = this.$menu.find('.active').attr('data-value')
1493
-      this.$element.val(val)
1494
-      return this.hide()
1495
-    }
1496
-
1497
-  , show: function () {
1498
-      var pos = $.extend({}, this.$element.offset(), {
1499
-        height: this.$element[0].offsetHeight
1500
-      })
1501
-
1502
-      this.$menu.css({
1503
-        top: pos.top + pos.height
1504
-      , left: pos.left
1505
-      })
1506
-
1507
-      this.$menu.show()
1508
-      this.shown = true
1509
-      return this
1510
-    }
1511
-
1512
-  , hide: function () {
1513
-      this.$menu.hide()
1514
-      this.shown = false
1515
-      return this
1516
-    }
1517
-
1518
-  , lookup: function (event) {
1519
-      var that = this
1520
-        , items
1521
-        , q
1522
-
1523
-      this.query = this.$element.val()
1524
-
1525
-      if (!this.query) {
1526
-        return this.shown ? this.hide() : this
1527
-      }
1528
-
1529
-      items = $.grep(this.source, function (item) {
1530
-        if (that.matcher(item)) return item
1531
-      })
1532
-
1533
-      items = this.sorter(items)
1534
-
1535
-      if (!items.length) {
1536
-        return this.shown ? this.hide() : this
1537
-      }
1538
-
1539
-      return this.render(items.slice(0, this.options.items)).show()
1540
-    }
1541
-
1542
-  , matcher: function (item) {
1543
-      return ~item.toLowerCase().indexOf(this.query.toLowerCase())
1544
-    }
1545
-
1546
-  , sorter: function (items) {
1547
-      var beginswith = []
1548
-        , caseSensitive = []
1549
-        , caseInsensitive = []
1550
-        , item
1551
-
1552
-      while (item = items.shift()) {
1553
-        if (!item.toLowerCase().indexOf(this.query.toLowerCase())) beginswith.push(item)
1554
-        else if (~item.indexOf(this.query)) caseSensitive.push(item)
1555
-        else caseInsensitive.push(item)
1556
-      }
1557
-
1558
-      return beginswith.concat(caseSensitive, caseInsensitive)
1559
-    }
1560
-
1561
-  , highlighter: function (item) {
1562
-      return item.replace(new RegExp('(' + this.query + ')', 'ig'), function ($1, match) {
1563
-        return '<strong>' + match + '</strong>'
1564
-      })
1565
-    }
1566
-
1567
-  , render: function (items) {
1568
-      var that = this
1569
-
1570
-      items = $(items).map(function (i, item) {
1571
-        i = $(that.options.item).attr('data-value', item)
1572
-        i.find('a').html(that.highlighter(item))
1573
-        return i[0]
1574
-      })
1575
-
1576
-      items.first().addClass('active')
1577
-      this.$menu.html(items)
1578
-      return this
1579
-    }
1580
-
1581
-  , next: function (event) {
1582
-      var active = this.$menu.find('.active').removeClass('active')
1583
-        , next = active.next()
1584
-
1585
-      if (!next.length) {
1586
-        next = $(this.$menu.find('li')[0])
1587
-      }
1588
-
1589
-      next.addClass('active')
1590
-    }
1591
-
1592
-  , prev: function (event) {
1593
-      var active = this.$menu.find('.active').removeClass('active')
1594
-        , prev = active.prev()
1595
-
1596
-      if (!prev.length) {
1597
-        prev = this.$menu.find('li').last()
1598
-      }
1599
-
1600
-      prev.addClass('active')
1601
-    }
1602
-
1603
-  , listen: function () {
1604
-      this.$element
1605
-        .on('blur',     $.proxy(this.blur, this))
1606
-        .on('keypress', $.proxy(this.keypress, this))
1607
-        .on('keyup',    $.proxy(this.keyup, this))
1608
-
1609
-      if ($.browser.webkit || $.browser.msie) {
1610
-        this.$element.on('keydown', $.proxy(this.keypress, this))
1611
-      }
1612
-
1613
-      this.$menu
1614
-        .on('click', $.proxy(this.click, this))
1615
-        .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
1616
-    }
1617
-
1618
-  , keyup: function (e) {
1619
-      e.stopPropagation()
1620
-      e.preventDefault()
1621
-
1622
-      switch(e.keyCode) {
1623
-        case 40: // down arrow
1624
-        case 38: // up arrow
1625
-          break
1626
-
1627
-        case 9: // tab
1628
-        case 13: // enter
1629
-          if (!this.shown) return
1630
-          this.select()
1631
-          break
1632
-
1633
-        case 27: // escape
1634
-          this.hide()
1635
-          break
1636
-
1637
-        default:
1638
-          this.lookup()
1639
-      }
1640
-
1641
-  }
1642
-
1643
-  , keypress: function (e) {
1644
-      e.stopPropagation()
1645
-      if (!this.shown) return
1646
-
1647
-      switch(e.keyCode) {
1648
-        case 9: // tab
1649
-        case 13: // enter
1650
-        case 27: // escape
1651
-          e.preventDefault()
1652
-          break
1653
-
1654
-        case 38: // up arrow
1655
-          e.preventDefault()
1656
-          this.prev()
1657
-          break
1658
-
1659
-        case 40: // down arrow
1660
-          e.preventDefault()
1661
-          this.next()
1662
-          break
1663
-      }
1664
-    }
1665
-
1666
-  , blur: function (e) {
1667
-      var that = this
1668
-      e.stopPropagation()
1669
-      e.preventDefault()
1670
-      setTimeout(function () { that.hide() }, 150)
1671
-    }
1672
-
1673
-  , click: function (e) {
1674
-      e.stopPropagation()
1675
-      e.preventDefault()
1676
-      this.select()
1677
-    }
1678
-
1679
-  , mouseenter: function (e) {
1680
-      this.$menu.find('.active').removeClass('active')
1681
-      $(e.currentTarget).addClass('active')
1682
-    }
1683
-
1684
-  }
1685
-
1686
-
1687
-  /* TYPEAHEAD PLUGIN DEFINITION
1688
-   * =========================== */
1689
-
1690
-  $.fn.typeahead = function ( option ) {
1691
-    return this.each(function () {
1692
-      var $this = $(this)
1693
-        , data = $this.data('typeahead')
1694
-        , options = typeof option == 'object' && option
1695
-      if (!data) $this.data('typeahead', (data = new Typeahead(this, options)))
1696
-      if (typeof option == 'string') data[option]()
1697
-    })
1698
-  }
1699
-
1700
-  $.fn.typeahead.defaults = {
1701
-    source: []
1702
-  , items: 8
1703
-  , menu: '<ul class="typeahead dropdown-menu"></ul>'
1704
-  , item: '<li><a href="#"></a></li>'
1705
-  }
1706
-
1707
-  $.fn.typeahead.Constructor = Typeahead
1708
-
1709
-
1710
- /* TYPEAHEAD DATA-API
1711
-  * ================== */
1712
-
1713
-  $(function () {
1714
-    $('body').on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
1715
-      var $this = $(this)
1716
-      if ($this.data('typeahead')) return
1717
-      e.preventDefault()
1718
-      $this.typeahead($this.data())
1719
-    })
1720
-  })
1721
-
1722
-}( window.jQuery )
1723 1
deleted file mode 100644
... ...
@@ -1 +0,0 @@
1
-!function(a){a(function(){"use strict",a.support.transition=function(){var b=document.body||document.documentElement,c=b.style,d=c.transition!==undefined||c.WebkitTransition!==undefined||c.MozTransition!==undefined||c.MsTransition!==undefined||c.OTransition!==undefined;return d&&{end:function(){var b="TransitionEnd";return a.browser.webkit?b="webkitTransitionEnd":a.browser.mozilla?b="transitionend":a.browser.opera&&(b="oTransitionEnd"),b}()}}()})}(window.jQuery),!function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype={constructor:c,close:function(b){function f(){e.remove(),e.trigger("closed")}var c=a(this),d=c.attr("data-target"),e;d||(d=c.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),e=a(d),e.trigger("close"),b&&b.preventDefault(),e.length||(e=c.hasClass("alert")?c:c.parent()),e.removeClass("in"),a.support.transition&&e.hasClass("fade")?e.on(a.support.transition.end,f):f()}},a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("alert");e||d.data("alert",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.alert.Constructor=c,a(function(){a("body").on("click.alert.data-api",b,c.prototype.close)})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype={constructor:b,setState:function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},toggle:function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")}},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){a(b.target).button("toggle")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.carousel.defaults,c),this.options.slide&&this.slide(this.options.slide)};b.prototype={cycle:function(){return this.interval=setInterval(a.proxy(this.next,this),this.options.interval),this},to:function(b){var c=this.$element.find(".active"),d=c.parent().children(),e=d.index(c),f=this;if(b>d.length-1||b<0)return;return this.sliding?this.$element.one("slid",function(){f.to(b)}):e==b?this.pause().cycle():this.slide(b>e?"next":"prev",a(d[b]))},pause:function(){return clearInterval(this.interval),this},next:function(){if(this.sliding)return;return this.slide("next")},prev:function(){if(this.sliding)return;return this.slide("prev")},slide:function(b,c){var d=this.$element.find(".active"),e=c||d[b](),f=this.interval,g=b=="next"?"left":"right",h=b=="next"?"first":"last",i=this;return this.sliding=!0,f&&this.pause(),e=e.length?e:this.$element.find(".item")[h](),!a.support.transition&&this.$element.hasClass("slide")?(this.$element.trigger("slide"),d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid")):(e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),this.$element.trigger("slide"),this.$element.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid")},0)})),f&&this.cycle(),this}},a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("carousel"),f=typeof c=="object"&&c;e||d.data("carousel",e=new b(this,f)),typeof c=="number"?e.to(c):typeof c=="string"||(c=f.slide)?e[c]():e.cycle()})},a.fn.carousel.defaults={interval:5e3},a.fn.carousel.Constructor=b,a(function(){a("body").on("click.carousel.data-api","[data-slide]",function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=!e.data("modal")&&a.extend({},e.data(),c.data());e.carousel(f),b.preventDefault()})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.collapse.defaults,c),this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.prototype={constructor:b,dimension:function(){var a=this.$element.hasClass("width");return a?"width":"height"},show:function(){var b=this.dimension(),c=a.camelCase(["scroll",b].join("-")),d=this.$parent&&this.$parent.find(".in"),e;d&&d.length&&(e=d.data("collapse"),d.collapse("hide"),e||d.data("collapse",null)),this.$element[b](0),this.transition("addClass","show","shown"),this.$element[b](this.$element[0][c])},hide:function(){var a=this.dimension();this.reset(this.$element[a]()),this.transition("removeClass","hide","hidden"),this.$element[a](0)},reset:function(a){var b=this.dimension();this.$element.removeClass("collapse")[b](a||"auto")[0].offsetWidth,this.$element.addClass("collapse")},transition:function(b,c,d){var e=this,f=function(){c=="show"&&e.reset(),e.$element.trigger(d)};this.$element.trigger(c)[b]("in"),a.support.transition&&this.$element.hasClass("collapse")?this.$element.one(a.support.transition.end,f):f()},toggle:function(){this[this.$element.hasClass("in")?"hide":"show"]()}},a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("collapse"),f=typeof c=="object"&&c;e||d.data("collapse",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.collapse.defaults={toggle:!0},a.fn.collapse.Constructor=b,a(function(){a("body").on("click.collapse.data-api","[data-toggle=collapse]",function(b){var c=a(this),d,e=c.attr("data-target")||b.preventDefault()||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""),f=a(e).data("collapse")?"toggle":c.data();a(e).collapse(f)})})}(window.jQuery),!function(a){function d(){a(b).parent().removeClass("open")}"use strict";var b='[data-toggle="dropdown"]',c=function(b){var c=a(b).on("click.dropdown.data-api",this.toggle);a("html").on("click.dropdown.data-api",function(){c.parent().removeClass("open")})};c.prototype={constructor:c,toggle:function(b){var c=a(this),e=c.attr("data-target"),f,g;return e||(e=c.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,"")),f=a(e),f.length||(f=c.parent()),g=f.hasClass("open"),d(),!g&&f.toggleClass("open"),!1}},a.fn.dropdown=function(b){return this.each(function(){var d=a(this),e=d.data("dropdown");e||d.data("dropdown",e=new c(this)),typeof b=="string"&&e[b].call(d)})},a.fn.dropdown.Constructor=c,a(function(){a("html").on("click.dropdown.data-api",d),a("body").on("click.dropdown.data-api",b,c.prototype.toggle)})}(window.jQuery),!function(a){function c(){var b=this,c=setTimeout(function(){b.$element.off(a.support.transition.end),d.call(b)},500);this.$element.one(a.support.transition.end,function(){clearTimeout(c),d.call(b)})}function d(a){this.$element.hide().trigger("hidden"),e.call(this)}function e(b){var c=this,d=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var e=a.support.transition&&d;this.$backdrop=a('<div class="modal-backdrop '+d+'" />').appendTo(document.body),this.options.backdrop!="static"&&this.$backdrop.click(a.proxy(this.hide,this)),e&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),e?this.$backdrop.one(a.support.transition.end,b):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,a.proxy(f,this)):f.call(this)):b&&b()}function f(){this.$backdrop.remove(),this.$backdrop=null}function g(){var b=this;this.isShown&&this.options.keyboard?a(document).on("keyup.dismiss.modal",function(a){a.which==27&&b.hide()}):this.isShown||a(document).off("keyup.dismiss.modal")}"use strict";var b=function(b,c){this.options=a.extend({},a.fn.modal.defaults,c),this.$element=a(b).delegate('[data-dismiss="modal"]',"click.dismiss.modal",a.proxy(this.hide,this))};b.prototype={constructor:b,toggle:function(){return this[this.isShown?"hide":"show"]()},show:function(){var b=this;if(this.isShown)return;a("body").addClass("modal-open"),this.isShown=!0,this.$element.trigger("show"),g.call(this),e.call(this,function(){var c=a.support.transition&&b.$element.hasClass("fade");!b.$element.parent().length&&b.$element.appendTo(document.body),b.$element.show(),c&&b.$element[0].offsetWidth,b.$element.addClass("in"),c?b.$element.one(a.support.transition.end,function(){b.$element.trigger("shown")}):b.$element.trigger("shown")})},hide:function(b){b&&b.preventDefault();if(!this.isShown)return;var e=this;this.isShown=!1,a("body").removeClass("modal-open"),g.call(this),this.$element.trigger("hide").removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?c.call(this):d.call(this)}},a.fn.modal=function(c){return this.each(function(){var d=a(this),e=d.data("modal"),f=typeof c=="object"&&c;e||d.data("modal",e=new b(this,f)),typeof c=="string"?e[c]():e.show()})},a.fn.modal.defaults={backdrop:!0,keyboard:!0},a.fn.modal.Constructor=b,a(function(){a("body").on("click.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d,e=a(c.attr("data-target")||(d=c.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({},e.data(),c.data());b.preventDefault(),e.modal(f)})})}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("tooltip",a,b)};b.prototype={constructor:b,init:function(b,c,d){var e,f;this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.enabled=!0,this.options.trigger!="manual"&&(e=this.options.trigger=="hover"?"mouseenter":"focus",f=this.options.trigger=="hover"?"mouseleave":"blur",this.$element.on(e,this.options.selector,a.proxy(this.enter,this)),this.$element.on(f,this.options.selector,a.proxy(this.leave,this))),this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},getOptions:function(b){return b=a.extend({},a.fn[this.type].defaults,b,this.$element.data()),b.delay&&typeof b.delay=="number"&&(b.delay={show:b.delay,hide:b.delay}),b},enter:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.show?c.show():(c.hoverState="in",setTimeout(function(){c.hoverState=="in"&&c.show()},c.options.delay.show))},leave:function(b){var c=a(b.currentTarget)[this.type](this._options).data(this.type);!c.options.delay||!c.options.delay.hide?c.hide():(c.hoverState="out",setTimeout(function(){c.hoverState=="out"&&c.hide()},c.options.delay.hide))},show:function(){var a,b,c,d,e,f,g;if(this.hasContent()&&this.enabled){a=this.tip(),this.setContent(),this.options.animation&&a.addClass("fade"),f=typeof this.options.placement=="function"?this.options.placement.call(this,a[0],this.$element[0]):this.options.placement,b=/in/.test(f),a.remove().css({top:0,left:0,display:"block"}).appendTo(b?this.$element:document.body),c=this.getPosition(b),d=a[0].offsetWidth,e=a[0].offsetHeight;switch(b?f.split(" ")[1]:f){case"bottom":g={top:c.top+c.height,left:c.left+c.width/2-d/2};break;case"top":g={top:c.top-e,left:c.left+c.width/2-d/2};break;case"left":g={top:c.top+c.height/2-e/2,left:c.left-d};break;case"right":g={top:c.top+c.height/2-e/2,left:c.left+c.width}}a.css(g).addClass(f).addClass("in")}},setContent:function(){var a=this.tip();a.find(".tooltip-inner").html(this.getTitle()),a.removeClass("fade in top bottom left right")},hide:function(){function d(){var b=setTimeout(function(){c.off(a.support.transition.end).remove()},500);c.one(a.support.transition.end,function(){clearTimeout(b),c.remove()})}var b=this,c=this.tip();c.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d():c.remove()},fixTitle:function(){var a=this.$element;(a.attr("title")||typeof a.attr("data-original-title")!="string")&&a.attr("data-original-title",a.attr("title")||"").removeAttr("title")},hasContent:function(){return this.getTitle()},getPosition:function(b){return a.extend({},b?{top:0,left:0}:this.$element.offset(),{width:this.$element[0].offsetWidth,height:this.$element[0].offsetHeight})},getTitle:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||(typeof c.title=="function"?c.title.call(b[0]):c.title),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip=this.$tip||a(this.options.template)},validate:function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},enable:function(){this.enabled=!0},disable:function(){this.enabled=!1},toggleEnabled:function(){this.enabled=!this.enabled},toggle:function(){this[this.tip().hasClass("in")?"hide":"show"]()}},a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("tooltip"),f=typeof c=="object"&&c;e||d.data("tooltip",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.defaults={animation:!0,delay:0,selector:!1,placement:"top",trigger:"hover",title:"",template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'}}(window.jQuery),!function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype,{constructor:b,setContent:function(){var b=this.tip(),c=this.getTitle(),d=this.getContent();b.find(".popover-title")[a.type(c)=="object"?"append":"html"](c),b.find(".popover-content > *")[a.type(d)=="object"?"append":"html"](d),b.removeClass("fade top bottom left right in")},hasContent:function(){return this.getTitle()||this.getContent()},getContent:function(){var a,b=this.$element,c=this.options;return a=b.attr("data-content")||(typeof c.content=="function"?c.content.call(b[0]):c.content),a=a.toString().replace(/(^\s*|\s*$)/,""),a},tip:function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip}}),a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("popover"),f=typeof c=="object"&&c;e||d.data("popover",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.defaults=a.extend({},a.fn.tooltip.defaults,{placement:"right",content:"",template:'<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"><p></p></div></div></div>'})}(window.jQuery),!function(a){function b(b,c){var d=a.proxy(this.process,this),e=a(b).is("body")?a(window):a(b),f;this.options=a.extend({},a.fn.scrollspy.defaults,c),this.$scrollElement=e.on("scroll.scroll.data-api",d),this.selector=(this.options.target||(f=a(b).attr("href"))&&f.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.$body=a("body").on("click.scroll.data-api",this.selector,d),this.refresh(),this.process()}"use strict",b.prototype={constructor:b,refresh:function(){this.targets=this.$body.find(this.selector).map(function(){var b=a(this).attr("href");return/^#\w/.test(b)&&a(b).length?b:null}),this.offsets=a.map(this.targets,function(b){return a(b).position().top})},process:function(){var a=this.$scrollElement.scrollTop()+this.options.offset,b=this.offsets,c=this.targets,d=this.activeTarget,e;for(e=b.length;e--;)d!=c[e]&&a>=b[e]&&(!b[e+1]||a<=b[e+1])&&this.activate(c[e])},activate:function(a){var b;this.activeTarget=a,this.$body.find(this.selector).parent(".active").removeClass("active"),b=this.$body.find(this.selector+'[href="'+a+'"]').parent("li").addClass("active"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active")}},a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("scrollspy"),f=typeof c=="object"&&c;e||d.data("scrollspy",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.defaults={offset:10},a(function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(window.jQuery),!function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype={constructor:b,show:function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.attr("data-target"),e,f;d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,""));if(b.parent("li").hasClass("active"))return;e=c.find(".active a").last()[0],b.trigger({type:"show",relatedTarget:e}),f=a(d),this.activate(b.parent("li"),c),this.activate(f,f.parent(),function(){b.trigger({type:"shown",relatedTarget:e})})},activate:function(b,c,d){function g(){e.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),f?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var e=c.find("> .active"),f=d&&a.support.transition&&e.hasClass("fade");f?e.one(a.support.transition.end,g):g(),e.removeClass("in")}},a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("tab");e||d.data("tab",e=new b(this)),typeof c=="string"&&e[c]()})},a.fn.tab.Constructor=b,a(function(){a("body").on("click.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})})}(window.jQuery),!function(a){"use strict";var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.typeahead.defaults,c),this.matcher=this.options.matcher||this.matcher,this.sorter=this.options.sorter||this.sorter,this.highlighter=this.options.highlighter||this.highlighter,this.$menu=a(this.options.menu).appendTo("body"),this.source=this.options.source,this.shown=!1,this.listen()};b.prototype={constructor:b,select:function(){var a=this.$menu.find(".active").attr("data-value");return this.$element.val(a),this.hide()},show:function(){var b=a.extend({},this.$element.offset(),{height:this.$element[0].offsetHeight});return this.$menu.css({top:b.top+b.height,left:b.left}),this.$menu.show(),this.shown=!0,this},hide:function(){return this.$menu.hide(),this.shown=!1,this},lookup:function(b){var c=this,d,e;return this.query=this.$element.val(),this.query?(d=a.grep(this.source,function(a){if(c.matcher(a))return a}),d=this.sorter(d),d.length?this.render(d.slice(0,this.options.items)).show():this.shown?this.hide():this):this.shown?this.hide():this},matcher:function(a){return~a.toLowerCase().indexOf(this.query.toLowerCase())},sorter:function(a){var b=[],c=[],d=[],e;while(e=a.shift())e.toLowerCase().indexOf(this.query.toLowerCase())?~e.indexOf(this.query)?c.push(e):d.push(e):b.push(e);return b.concat(c,d)},highlighter:function(a){return a.replace(new RegExp("("+this.query+")","ig"),function(a,b){return"<strong>"+b+"</strong>"})},render:function(b){var c=this;return b=a(b).map(function(b,d){return b=a(c.options.item).attr("data-value",d),b.find("a").html(c.highlighter(d)),b[0]}),b.first().addClass("active"),this.$menu.html(b),this},next:function(b){var c=this.$menu.find(".active").removeClass("active"),d=c.next();d.length||(d=a(this.$menu.find("li")[0])),d.addClass("active")},prev:function(a){var b=this.$menu.find(".active").removeClass("active"),c=b.prev();c.length||(c=this.$menu.find("li").last()),c.addClass("active")},listen:function(){this.$element.on("blur",a.proxy(this.blur,this)).on("keypress",a.proxy(this.keypress,this)).on("keyup",a.proxy(this.keyup,this)),(a.browser.webkit||a.browser.msie)&&this.$element.on("keydown",a.proxy(this.keypress,this)),this.$menu.on("click",a.proxy(this.click,this)).on("mouseenter","li",a.proxy(this.mouseenter,this))},keyup:function(a){a.stopPropagation(),a.preventDefault();switch(a.keyCode){case 40:case 38:break;case 9:case 13:if(!this.shown)return;this.select();break;case 27:this.hide();break;default:this.lookup()}},keypress:function(a){a.stopPropagation();if(!this.shown)return;switch(a.keyCode){case 9:case 13:case 27:a.preventDefault();break;case 38:a.preventDefault(),this.prev();break;case 40:a.preventDefault(),this.next()}},blur:function(a){var b=this;a.stopPropagation(),a.preventDefault(),setTimeout(function(){b.hide()},150)},click:function(a){a.stopPropagation(),a.preventDefault(),this.select()},mouseenter:function(b){this.$menu.find(".active").removeClass("active"),a(b.currentTarget).addClass("active")}},a.fn.typeahead=function(c){return this.each(function(){var d=a(this),e=d.data("typeahead"),f=typeof c=="object"&&c;e||d.data("typeahead",e=new b(this,f)),typeof c=="string"&&e[c]()})},a.fn.typeahead.defaults={source:[],items:8,menu:'<ul class="typeahead dropdown-menu"></ul>',item:'<li><a href="#"></a></li>'},a.fn.typeahead.Constructor=b,a(function(){a("body").on("focus.typeahead.data-api",'[data-provide="typeahead"]',function(b){var c=a(this);if(c.data("typeahead"))return;b.preventDefault(),c.typeahead(c.data())})})}(window.jQuery);
2 1
\ No newline at end of file
3 2
deleted file mode 100644
... ...
@@ -1,4 +0,0 @@
1
-/*! jQuery v1.7.1 jquery.com | jquery.org/license */
2
-(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function(){g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")};
3
-f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function()
4
-{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window);
5 1
\ No newline at end of file
6 2
deleted file mode 100644
... ...
@@ -1,70 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>DevStack - Recent Changes</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-    
22
-    <!-- Le javascripts -->
23
-    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="overview.html">Overview</a></li>
35
-            <li><a href="changes.html">Changes</a></li>
36
-            <li><a href="faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container" id="home">
45
-      
46
-      <section id="faq" class="span12">
47
-
48
-        <div class='row pull-left'>
49
-          <h2>Recent Changes <small>What's been happening?</small></h2>
50
-          <p>These are the commits to DevStack for the last six months.  For the complete list see <a href="https://review.openstack.org/#/q/status:merged+project:openstack-dev/devstack,n,z">the DevStack project in Gerrit</a>.</p>
51
-
52
-          <ul class='pull-left'>
53
-            <!--
54
-              This list is generated by:
55
-              git log --pretty=format:'            <li>%s - <em>Commit <a href="https://review.openstack.org/#q,%h,n,z">%h</a> %cd</em></li>' --date=short --since 2014-01-01 | grep -v Merge
56
-            -->
57
-            <!-- Begin git log %GIT_LOG% -->
58
-            <!-- End git log -->
59
-          </ul>
60
-        </div>        
61
-
62
-      </section>
63
-
64
-      <footer>
65
-        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
66
-      </footer>
67
-
68
-    </div> <!-- /container -->
69
-  </body>
70
-</html>
71 1
deleted file mode 100644
... ...
@@ -1,237 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>DevStack - Overview</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-
22
-    <!-- Le javascripts -->
23
-    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="overview.html">Overview</a></li>
35
-            <li><a href="changes.html">Changes</a></li>
36
-            <li><a href="faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container" id="home">
45
-
46
-      <section id="overview" class="span12">
47
-
48
-        <div class='row pull-left'>
49
-          <h2>Configuration <small>Making it go my way</small></h2>
50
-          <p>DevStack has always tried to be mostly-functional with a minimal amount of configuration.  The number of options has ballooned as projects add features, new projects added and more combinations need to be tested.  Historically DevStack obtained all local configuration and customizations from a <code>localrc</code> file.  The number of configuration variables that are simply passed-through to the individual project configuration files is also increasing.  The old mechanism for this (<code>EXTRAS_OPTS</code> and friends) required specific code for each file and did not scale well.</p>
51
-          <p>In Oct 2013 a new configuration method was introduced (in <a href="https://review.openstack.org/#/c/46768/">review 46768</a>) to hopefully simplify this process and meet the following goals:</p>
52
-          <ul>
53
-            <li>contain all non-default local configuration in a single file</li>
54
-            <li>be backward-compatible with <code>localrc</code> to smooth the transition process</li>
55
-            <li>allow settings in arbitrary configuration files to be changed</li>
56
-          </ul>
57
-
58
-          <h3>local.conf</h3>
59
-          <p>The new configuration file is <code>local.conf</code> and resides in the root DevStack directory like the old <code>localrc</code> file.  It is a modified INI format file that introduces a meta-section header to carry additional information regarding the configuration files to be changed.</p>
60
-
61
-          <p>The new header is similar to a normal INI section header but with double brackets (<code>[[ ... ]]</code>) and two internal fields separated by a pipe (<code>|</code>):</p>
62
-<pre>[[ &lt;phase&gt; | &lt;config-file-name&gt; ]]
63
-</pre>
64
-
65
-          <p>where <code>&lt;phase&gt;</code> is one of a set of phase names defined by <code>stack.sh</code> and <code>&lt;config-file-name&gt;</code> is the configuration filename.  The filename is eval'ed in the <code>stack.sh</code> context so all environment variables are available and may be used.  Using the project config file variables in the header is strongly suggested (see the <code>NOVA_CONF</code> example below).  If the path of the config file does not exist it is skipped.</p>
66
-
67
-          <p>The defined phases are:</p>
68
-          <ul>
69
-            <li><strong>local</strong> - extracts <code>localrc</code> from <code>local.conf</code> before <code>stackrc</code> is sourced</li>
70
-            <li><strong>pre-install</strong> - runs after the system packages are installed but before any of the source repositories are installed</li>
71
-            <li><strong>install</strong> - runs immediately after the repo installations are complete</li>
72
-            <li><strong>post-config</strong> - runs after the layer 2 services are configured and before they are started</li>
73
-            <li><strong>extra</strong> - runs after services are started and before any files in <code>extra.d</code> are executed
74
-          </ul>
75
-
76
-          <p>The file is processed strictly in sequence; meta-sections may be specified more than once but if any settings are duplicated the last to appear in the file will be used.</p>
77
-<pre>[[post-config|$NOVA_CONF]]
78
-[DEFAULT]
79
-use_syslog = True
80
-
81
-[osapi_v3]
82
-enabled = False
83
-</pre>
84
-
85
-          <p>A specific meta-section <code>local|localrc</code> is used to
86
-          provide a default <code>localrc</code> file (actually
87
-          <code>.localrc.auto</code>).  This allows all custom settings
88
-          for DevStack to be contained in a single file.  If <code>localrc</code>
89
-          exists it will be used instead to preserve backward-compatibility.  More
90
-          details on the <a href="localrc.html">contents of localrc</a> are available.</p>
91
-<pre>[[local|localrc]]
92
-FIXED_RANGE=10.254.1.0/24
93
-ADMIN_PASSWORD=speciale
94
-LOGFILE=$DEST/logs/stack.sh.log
95
-</pre>
96
-
97
-          <p>Note that <code>Q_PLUGIN_CONF_FILE</code> is unique in that it is assumed to <em>NOT</em> start with a <code>/</code> (slash) character.  A slash will need to be added:</p>
98
-<pre>[[post-config|/$Q_PLUGIN_CONF_FILE]]
99
-</pre>
100
-
101
-          <p>Also note that the <code>localrc</code> section is sourced as a shell script fragment amd <string>MUST</strong> conform to the shell requirements, specifically no whitespace around <code>=</code> (equals).</p>
102
-
103
-          <a id="minimal"></a>
104
-          <h3>Minimal Configuration</h3>
105
-          <p>While <code>stack.sh</code> is happy to run without a <code>localrc</code> section in <code>local.conf</code>, devlife is better when there are a few minimal variables set. This is an example of a minimal configuration that touches the values that most often need to be set.</p>
106
-          <ul>
107
-            <li>no logging</li>
108
-            <li>pre-set the passwords to prevent interactive prompts</li>
109
-            <li>move network ranges away from the local network (<code>FIXED_RANGE</code> and <code>FLOATING_RANGE</code>, commented out below)</li>
110
-            <li>set the host IP if detection is unreliable (<code>HOST_IP</code>, commented out below)</li>
111
-          </ul>
112
-          <pre>[[local|localrc]]
113
-ADMIN_PASSWORD=secrete
114
-DATABASE_PASSWORD=$ADMIN_PASSWORD
115
-RABBIT_PASSWORD=$ADMIN_PASSWORD
116
-SERVICE_PASSWORD=$ADMIN_PASSWORD
117
-SERVICE_TOKEN=a682f596-76f3-11e3-b3b2-e716f9080d50
118
-#FIXED_RANGE=172.31.1.0/24
119
-#FLOATING_RANGE=192.168.20.0/25
120
-#HOST_IP=10.3.4.5</pre>
121
-          <p>If the <code>*_PASSWORD</code> variables are not set here you will be prompted to enter values for them by <code>stack.sh</code>.</p>
122
-          <p>The network ranges must not overlap with any networks in use on the host.  Overlap is not uncommon as RFC-1918 'private' ranges are commonly used for both the local networking and Nova's fixed and floating ranges.</p>
123
-          <p><code>HOST_IP</code> is normally detected on the first run of <code>stack.sh</code> but often is indeterminate on later runs due to the IP being moved from an Ethernet integace to a bridge on the host.  Setting it here also makes it available for <code>openrc</code> to set <code>OS_AUTH_URL</code>.  <code>HOST_IP</code> is not set by default.</p>
124
-
125
-          <h3>Common Configuration Variables</h3>
126
-          <dl>
127
-            <dt>Set DevStack install directory</dt>
128
-            <dd><em>Default: <code>DEST=/opt/stack</code></em><br />
129
-            The DevStack install directory is set by the <code>DEST</code> variable. By setting it early in the <code>localrc</code> section you can reference it in later variables.  It can be useful to set it even though it is not changed from the default value.
130
-            <pre>DEST=/opt/stack</pre></dd>
131
-
132
-            <dt>stack.sh logging</dt>
133
-            <dd><em>Defaults: <code>LOGFILE="" LOGDAYS=7 LOG_COLOR=True</code></em><br />
134
-            By default <code>stack.sh</code> output is only written to the console where is runs.  It can be sent to a file in addition to the console by setting <code>LOGFILE</code> to the fully-qualified name of the destination log file.  A timestamp will be appended to the given filename for each run of <code>stack.sh</code>.
135
-            <pre>LOGFILE=$DEST/logs/stack.sh.log</pre>
136
-            Old log files are cleaned automatically if <code>LOGDAYS</code> is set to the number of days of old log files to keep.
137
-            <pre>LOGDAYS=1</pre>
138
-            The some of the project logs (Nova, Cinder, etc) will be colorized by default (if <code>SYSLOG</code> is not set below); this can be turned off by setting <code>LOG_COLOR</code> False.
139
-            <pre>LOG_COLOR=False</pre></dd>
140
-
141
-            <dt>Screen logging</dt>
142
-            <dd><em>Default: <code>SCREEN_LOGDIR=""</code></em><br />
143
-            By default DevStack runs the OpenStack services using <code>screen</code> which is useful for watching log and debug output.  However, in automated testing the interactive <code>screen</code> sessions may not be available after the fact; setting <code>SCREEN_LOGDIR</code> enables logging of the <code>screen</code> sessions in the specified diretory.  There will be one file per <code>screen</code> session named for the session name and a timestamp.  
144
-            <pre>SCREEN_LOGDIR=$DEST/logs/screen</pre>
145
-            <em>Note the use of <code>DEST</code> to locate the main install directory; this is why we suggest setting it in <code>local.conf</code>.</em></dd><br />
146
-
147
-            <dt>One syslog to bind them all</dt>
148
-            <dd><em>Default: <code>SYSLOG=False SYSLOG_HOST=$HOST_IP SYSLOG_PORT=516</code></em><br />
149
-            Logging all services to a single syslog can be convenient.  Enable syslogging by setting <code>SYSLOG</code> to <code>True</code>. If the destination log host is not localhost <code>SYSLOG_HOST</code> and <code>SYSLOG_PORT</code> can be used to direct the message stream to the log host.
150
-            <pre>SYSLOG=True
151
-SYSLOG_HOST=$HOST_IP
152
-SYSLOG_PORT=516</pre></dd>
153
-
154
-            <dt>A clean install every time</dt>
155
-            <dd><em>Default: <code>RECLONE=""</code></em><br />
156
-            By default <code>stack.sh</code> only clones the project repos if they do not exist in <code>$DEST</code>.  <code>stack.sh</code> will freshen each repo on each run if <code>RECLONE</code> is set to <code>yes</code>. This avoids having to manually remove repos in order to get the current branch from <code>$GIT_BASE</code>.
157
-            <pre>RECLONE=yes</code></dd>
158
-
159
-            <dt>Swift</dt>
160
-            <dd><em>Default: <code>SWIFT_HASH="" SWIFT_REPLICAS=1 SWIFT_DATA_DIR=$DEST/data/swift</code></em><br />
161
-            Swift is now used as the back-end for the S3-like object store.  When enabled Nova's objectstore (n-obj in <code>ENABLED_SERVICES</code>) is automatically disabled. Enable Swift by adding it services to <code>ENABLED_SERVICES</code>:
162
-            <pre>enable_service s-proxy s-object s-container s-account</pre>
163
-            Setting Swift's hash value is required and you will be prompted for it if Swift is enabled so just set it to something already:
164
-            <pre>SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5</pre>
165
-            For development purposes the default number of replicas is set to <code>1</code> to reduce the overhead required.  To better simulate a production deployment set this to <code>3</code> or more.
166
-            <pre>SWIFT_REPLICAS=3</pre>
167
-            The data for Swift is stored in the source tree by default
168
-            (in <code>$DEST/swift/data</code>) and can be moved by setting
169
-            <code>SWIFT_DATA_DIR</code>.  The specified directory will be created if it does not exist.
170
-            <pre>SWIFT_DATA_DIR=$DEST/data/swift</pre>
171
-            <em>Note: Previously just enabling <code>swift</code> was sufficient to start the Swift services.  That does not provide proper service granularity, particularly in multi-host configurations, and is considered deprecated.  Some service combination tests now check for specific Swift services and the old blanket acceptance will longer work correctly.</em>
172
-            </dd>
173
-
174
-            <dt>Service Catalog Backend</dt>
175
-            <dd><em>Default: <code>KEYSTONE_CATALOG_BACKEND=sql</code></em><br />
176
-            DevStack uses Keystone's <code>sql</code> service catalog backend.  An alternate <code>template</code> backend is also available.  However, it does not support the <code>service-*</code> and <code>endpoint-*</code> commands of the <code>keystone</code> CLI.  To
177
-            do so requires the <code>sql</code> backend be enabled:
178
-            <pre>KEYSTONE_CATALOG_BACKEND=template</pre>
179
-            DevStack's default configuration in <code>sql</code> mode is set in
180
-            <code>files/keystone_data.sh</code></dd>
181
-
182
-            <dt>Cinder</dt>
183
-            <dd><em>Default: <code>VOLUME_GROUP="stack-volumes" VOLUME_NAME_PREFIX="volume-" VOLUME_BACKING_FILE_SIZE=10250M</code></em><br />
184
-            The logical volume group used to hold the Cinder-managed volumes is set by <code>VOLUME_GROUP</code>, the logical volume name prefix is set with <code>VOLUME_NAME_PREFIX</code> and the size of the volume backing file is set with <code>VOLUME_BACKING_FILE_SIZE</code>.
185
-            <pre>VOLUME_GROUP="stack-volumes"
186
-VOLUME_NAME_PREFIX="volume-"
187
-VOLUME_BACKING_FILE_SIZE=10250M</pre></dd>
188
-
189
-            <dt>Multi-host DevStack</dt>
190
-            <dd><em>Default: <code>MULTI_HOST=False</code></em><br />
191
-            Running DevStack with multiple hosts requires a custom <code>local.conf</code> section for each host.  The master is the same as a single host installation with <code>MULTI_HOST=True</code>.  The slaves have fewer services enabled and a couple of host variables pointing to the master.  
192
-            <br /><br />
193
-            <strong>Master</strong>
194
-            <pre>MULTI_HOST=True</pre>
195
-
196
-            <strong>Slave</strong>
197
-            <pre>MYSQL_HOST=w.x.y.z
198
-RABBIT_HOST=w.x.y.z
199
-GLANCE_HOSTPORT=w.x.y.z:9292
200
-ENABLED_SERVICES=n-vol,n-cpu,n-net,n-api</pre></dd>
201
-
202
-            <dt>API rate limits</dt>
203
-            <dd><em>Default: <code>API_RATE_LIMIT=True</code><br />
204
-            Integration tests such as Tempest will likely run afoul of the default rate limits configured for Nova.  Turn off rate limiting during testing by setting <code>API_RATE_LIMIT=False</code>.
205
-            <pre>API_RATE_LIMIT=False</pre></dd>
206
-          </dl>
207
-
208
-          <h3>Examples</h3>
209
-          <ul>
210
-            <li>Eliminate a Cinder pass-through (<code>CINDER_PERIODIC_INTERVAL</code>):
211
-<pre>[[post-config|$CINDER_CONF]]
212
-[DEFAULT]
213
-periodic_interval = 60
214
-</pre></li>
215
-            <li>Sample <code>local.conf</code> with screen logging enabled:
216
-<pre>[[local|localrc]]
217
-FIXED_RANGE=10.254.1.0/24
218
-NETWORK_GATEWAY=10.254.1.1
219
-LOGDAYS=1
220
-LOGFILE=$DEST/logs/stack.sh.log
221
-SCREEN_LOGDIR=$DEST/logs/screen
222
-ADMIN_PASSWORD=quiet
223
-DATABASE_PASSWORD=$ADMIN_PASSWORD
224
-RABBIT_PASSWORD=$ADMIN_PASSWORD
225
-SERVICE_PASSWORD=$ADMIN_PASSWORD
226
-SERVICE_TOKEN=a682f596-76f3-11e3-b3b2-e716f9080d50</pre></li>
227
-          </ul>
228
-
229
-      </section>
230
-
231
-      <footer>
232
-        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
233
-      </footer>
234
-
235
-    </div> <!-- /container -->
236
-  </body>
237
-</html>
238 1
deleted file mode 100644
... ...
@@ -1,88 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>DevStack - Overview</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-
22
-    <!-- Le javascripts -->
23
-    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="overview.html">Overview</a></li>
35
-            <li><a href="changes.html">Changes</a></li>
36
-            <li><a href="faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container" id="home">
45
-
46
-      <section id="overview" class="span12">
47
-
48
-        <div class='row pull-left'>
49
-          <h2>Contributing <small>Help us help you</small></h2>
50
-          <p>DevStack uses the standard OpenStack contribution process as outlined in <a href="https://wiki.openstack.org/wiki/How_To_Contribute">the OpenStack wiki 'How To Contribute'</a>.  This means that you will need to meet the requirements of the Contribututors License Agreement (CLA).  If you have already done that for another OpenStack project you are good to go.</p>
51
-
52
-          <h3>Things To Know</h3>
53
-
54
-          <br /><strong>Where Things Are</strong>
55
-          <p>The official DevStack repository is located at <code>git://github.com/openstack-dev/devstack.git</code> and <code>git://git.openstack.org/openstack-dev/devstack.git</code>, both mirrors of the official repo maintained by Gerrit.</p>
56
-          <p>The <a href="https://blueprints.launchpad.net/devstack">blueprint</a> and <a href="https://bugs.launchpad.net/devstack">bug trackers</a> are on Launchpad.  It should be noted that DevStack generally does not use these as strongly as other projects, but we're trying to change that.</p>
57
-          <p>The <a href="https://review.openstack.org/#/q/project:openstack-dev/devstack,n,z">Gerrit review queue</a> is, however, used for all commits except for the text of this website.  That should also change in the near future.</p>
58
-
59
-          <br /><strong>HACKING.rst</strong>
60
-          <p>Like most OpenStack projects, DevStack includes a <code>HACKING.rst</code> file that describes the layout, style and conventions of the project.  Because <code>HACKING.rst</code> is in the main DevStack repo it is considered authoritative.  Much of the content on this page is taken from there.</p>
61
-
62
-          <br /><strong>bashate Formatting</strong>
63
-          <p>Around the time of the OpenStack Havana release we added a tool to do style checking in DevStack similar to what pep8/flake8 do for Python projects.  It is still _very_ simplistic, focusing mostly on stray whitespace to help prevent -1 on reviews that are otherwise acceptable.  Oddly enough it is called <code>bashate</code>.  It will be expanded to enforce some of the documentation rules in comments that are used in formatting the script pages for devstack.org and possibly even simple code formatting.  Run it on the entire project with <code>./run_tests.sh</code>.</p>
64
-
65
-          <h3>Code</h3>
66
-
67
-          <br /><strong>Repo Layout</strong>
68
-          <p>The DevStack repo generally keeps all of the primary scripts at the root level.</p>
69
-          <p><code>docs</code> - Contains the source for this website.  It is built using <code>tools/build_docs.sh</code>.</p>
70
-          <p><code>exercises</code> - Contains the test scripts used to validate and demonstrate some OpenStack functions.  These scripts know how to exit early or skip services that are not enabled.</p>
71
-          <p><code>extras.d</code> - Contains the dispatch scripts called by the hooks in <code>stack.sh</code>, <code>unstack.sh</code> and <code>clean.sh</code>.  See <a href="plugins.html">the plugins docs</a> for more information.</p>
72
-          <p><code>files</code> - Contains a variety of otherwise lost files used in configuring and operating DevStack.  This includes templates for configuration files and the system dependency information.  This is also where image files are downloaded and expanded if necessary.</p>
73
-          <p><code>lib</code> - Contains the sub-scripts specific to each project.  This is where the work of managing a project's services is located.  Each top-level project (Keystone, Nova, etc) has a file here.  Additionally there are some for system services and project plugins.</p>
74
-          <p><code>samples</code> - Contains a sample of the local files not included in the DevStack repo.</p>
75
-          <p><code>tests</code> - the DevStack test suite is rather sparse, mostly consisting of test of specific fragile functions in the <code>functions</code> file.</p>
76
-          <p><code>tools</code> - Contains a collection of stand-alone scripts, some of which have aged a bit (does anyone still do ramdisk installs?).  While these may reference the top-level DevStack configuration they can generally be run alone.  There are also some sub-directories to support specific environments such as XenServer.</p>
77
-          
78
-
79
-
80
-      </section>
81
-
82
-      <footer>
83
-        <p>&copy; Openstack Foundation 2011-2013 &mdash; An <a href="https://wiki.openstack.org/wiki/Programs">OpenStack program</a> created by <a href="http://www.rackspace.com/cloud/private_edition/">Rackspace Cloud Builders</a></p>
84
-      </footer>
85
-
86
-    </div> <!-- /container -->
87
-  </body>
88
-</html>
89 1
deleted file mode 100644
... ...
@@ -1,94 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>DevStack - eucarc</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-    
22
-    <!-- Le javascripts -->
23
-    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="overview.html">Overview</a></li>
35
-            <li><a href="changes.html">Changes</a></li>
36
-            <li><a href="faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container">
45
-
46
-      <section class="span12">
47
-        <div class="page-header">
48
-          <h2>eucarc <small>EC2 settings</small></h2>
49
-          <p><code>eucarc</code> creates EC2 credentials for the current user as
50
-            defined by <code>OS_TENANT_NAME:OS_USERNAME</code>.
51
-            <code>eucarc</code> sources <code>openrc</code> at the beginning
52
-            (which in turn sources <code>stackrc</code> and <code>localrc</code>)
53
-            in order to set credentials to create EC2 credentials in Keystone.
54
-        </div>
55
-        <dl>
56
-
57
-          <dt>EC2_URL</dt>
58
-          <dd>Set the EC2 url for euca2ools.  The endpoint is extracted from the
59
-            service catalog for <code>OS_TENANT_NAME:OS_USERNAME</code>.
60
-            <pre>EC2_URL=$(keystone catalog --service ec2 | awk '/ publicURL / { print $4 }')</pre></dd>
61
-
62
-          <dt>S3_URL</dt>
63
-          <dd>Set the S3 endpoint for euca2ools.  The endpoint is extracted from the
64
-            service catalog for <code>OS_TENANT_NAME:OS_USERNAME</code>.
65
-            <pre>export S3_URL=$(keystone catalog --service s3 | awk '/ publicURL / { print $4 }')</pre></dd>
66
-
67
-          <dt>EC2_ACCESS_KEY, EC2_SECRET_KEY</dt>
68
-          <dd>Create EC2 credentials for the current tenant:user in Keystone.
69
-            <pre>CREDS=$(keystone ec2-credentials-create)
70
-export EC2_ACCESS_KEY=$(echo "$CREDS" | awk '/ access / { print $4 }')
71
-export EC2_SECRET_KEY=$(echo "$CREDS" | awk '/ secret / { print $4 }')</pre></dd>
72
-
73
-          <dt>Certificates for Bundling</dt>
74
-          <dd>Euca2ools requires certificate files to enable bundle uploading.
75
-            The exercise script <code>exercises/bundle.sh</code> demonstrated
76
-            retrieving certificates using the Nova CLI.
77
-            <pre>EC2_PRIVATE_KEY=pk.pem
78
-EC2_CERT=cert.pem
79
-NOVA_CERT=cacert.pem
80
-EUCALYPTUS_CERT=${NOVA_CERT}</pre></dd>
81
-
82
-        </dl>
83
-      </section
84
-
85
-      <footer>
86
-        <p>&copy; Openstack Foundation 2011-2013 &mdash; An
87
-        <a href="https://wiki.openstack.org/wiki/Programs">OpenStack program</a>
88
-        created by <a href="http://www.rackspace.com/cloud/private_edition/">Rackspace Cloud Builders</a></p>
89
-      </footer>
90
-
91
-    </div> <!-- /container -->
92
-
93
-  </body>
94
-</html>
95 1
deleted file mode 100644
... ...
@@ -1,88 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>DevStack - exerciserc</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-    
22
-    <!-- Le javascripts -->
23
-    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="overview.html">Overview</a></li>
35
-            <li><a href="changes.html">Changes</a></li>
36
-            <li><a href="faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container">
45
-
46
-      <section class="span12">
47
-        <div class="page-header">
48
-          <h2>exerciserc <small>Exercise settings</small></h2>
49
-          <p><code>exerciserc</code> is used to configure settings for the
50
-          exercise scripts.  The values shown below are the default values.
51
-          Thse can all be overridden by setting them in the <code>localrc</code>
52
-          section.</p>
53
-        </div>
54
-        <dl>
55
-
56
-          <dt>ACTIVE_TIMEOUT</dt>
57
-          <dd>Max time to wait while vm goes from build to active state
58
-            <pre>ACTIVE_TIMEOUT==30</pre></dd>
59
-
60
-          <dt>ASSOCIATE_TIMEOUT</dt>
61
-          <dd>Max time to wait for proper IP association and dis-association.
62
-            <pre>ASSOCIATE_TIMEOUT=15</pre></dd>
63
-
64
-          <dt>BOOT_TIMEOUT</dt>
65
-          <dd>Max time till the vm is bootable
66
-            <pre>BOOT_TIMEOUT=30</pre></dd>
67
-
68
-          <dt>RUNNING_TIMEOUT</dt>
69
-          <dd>Max time from run instance command until it is running
70
-            <pre>RUNNING_TIMEOUT=$(($BOOT_TIMEOUT + $ACTIVE_TIMEOUT))</pre></dd>
71
-
72
-          <dt>TERMINATE_TIMEOUT</dt>
73
-          <dd>Max time to wait for a vm to terminate
74
-            <pre>TERMINATE_TIMEOUT=30</pre></dd>
75
-
76
-        </dl>
77
-      </section
78
-
79
-      <footer>
80
-        <p>&copy; Openstack Foundation 2011-2013 &mdash; An
81
-        <a href="https://wiki.openstack.org/wiki/Programs">OpenStack program</a>
82
-        created by <a href="http://www.rackspace.com/cloud/private_edition/">Rackspace Cloud Builders</a></p>
83
-      </footer>
84
-
85
-    </div> <!-- /container -->
86
-
87
-  </body>
88
-</html>
89 1
deleted file mode 100644
... ...
@@ -1,169 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>DevStack - Frequently Asked Questions</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-
22
-    <!-- Le javascripts -->
23
-    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="overview.html">Overview</a></li>
35
-            <li><a href="changes.html">Changes</a></li>
36
-            <li><a href="faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container" id="home">
45
-
46
-      <section id="faq" class="span12">
47
-
48
-        <div class='row pull-left'>
49
-          <h2>FAQ: Using DevStack <small>Making to behave</small></h2>
50
-
51
-          <ul>
52
-            <li><a href="#general">General Questions</a></li>
53
-            <li><a href="#ops_conf">Operation and Configuration</a></li>
54
-            <li><a href="#misc">Miscellaneous</a></li>
55
-          </ul>
56
-
57
-          <h3><a name="general">General Questions</a></h3>
58
-
59
-          <dl class='pull-left'>
60
-            <dt>Q: Can I use DevStack for production?</dt>
61
-            <dd>A: No.  We mean it.  Really.  DevStack makes some implementation choices that are not appropriate for production deployments.  We warned you!</dd>
62
-
63
-            <dt>Q: Then why selinux in enforcing mode?</dt>
64
-            <dd>A: That is the default on current Fedora and RHEL releases.  DevStack has (rightly so) a bad reputation for its security practices; it has always been meant as a development tool first and system integration later.  This is changing as the security issues around OpenStack's use of root (for example) have been tightened and developers need to be better equipped to work in these environments.  <code>stack.sh</code>'s use of root is primarily to support the activities that would be handled by packaging in "real" deployments.  To remove additional protections that will be desired/required in production would be a step backward.</dd>
65
-
66
-            <dt>Q: But selinux is disabled in RHEL 6!</dt>
67
-            <dd>A: Today it is, yes.  That is a specific exception that certain DevStack contributors fought strongly against.  The primary reason it was allowed was to support using RHEL6 as the Python 2.6 test platform and that took priority time-wise.  This will not be the case with RHEL 7.</dd>
68
-
69
-            <dt>Q: Why a shell script, why not chef/puppet/...</dt>
70
-            <dd>A: The script is meant to be read by humans (as well as ran by computers); it is the primary documentation after all.  Using a recipe system requires everyone to agree and understand chef or puppet.</dd>
71
-
72
-            <dt>Q: Why not use Crowbar?</dt>
73
-            <dd>A: DevStack is optimized for documentation &amp; developers.  As some of us use <a href="https://github.com/dellcloudedge/crowbar">Crowbar</a> for production deployments, we hope developers documenting how they setup systems for new features supports projects like Crowbar.</dd>
74
-
75
-            <dt>Q: I'd like to help!</dt>
76
-            <dd>A: That isn't a question, but please do!  The source for DevStack is <a href="http://github.com/openstack-dev/devstack">github</a> and bug reports go to <a href="http://bugs.launchpad.net/devstack/">LaunchPad</a>.  Contributions follow the usual process as described in the <a href="http://wiki.openstack.org/HowToContribute">OpenStack wiki</a> even though DevStack is not an official OpenStack project.  This site is housed in the CloudBuilder's <a href="http://github.com/cloudbuilders/devstack">github</a> in the gh-pages branch.</dd>
77
-
78
-            <dt>Q: Why not use packages?</dt>
79
-            <dd>A: Unlike packages, DevStack leaves your cloud ready to develop - checkouts of the code and services running in screen. However, many people are doing the hard work of packaging and recipes for production deployments.  We hope this script serves as a way to communicate configuration changes between developers and packagers.</dd>
80
-
81
-            <dt>Q: Why isn't $MY_FAVORITE_DISTRO supported?</dt>
82
-            <dd>A: DevStack is meant for developers and those who want to see how OpenStack really works.  DevStack is known to run on the distro/release combinations listed in <code>README.md</code>.  DevStack is only supported on releases other than those documented in <code>README.md</code> on a best-effort basis.</dd>
83
-
84
-            <dt>Q: What about Fedora/RHEL/CentOS?</dt>
85
-            <dd>A: Fedora and CentOS/RHEL are supported via rpm dependency files and specific checks in <code>stack.sh</code>.  Support will follow the pattern set with the Ubuntu testing, i.e. only a single release of the distro will receive regular testing, others will be handled on a best-effort basis.</dd>
86
-
87
-            <dt>Q: Are there any differences between Ubuntu and Fedora support?</dt>
88
-            <dd>A: Neutron is not fully supported prior to Fedora 18 due lack of OpenVSwitch packages.</dd>
89
-
90
-            <dt>Q: How about RHEL 6?</dt>
91
-            <dd>A: RHEL 6 has Python 2.6 and many old modules packaged and is a challenge to support.  There are a number of specific RHEL6 work-arounds in <code>stack.sh</code> to handle this.  But the testing on py26 is valuable so we do it...</dd>
92
-          </dl>
93
-
94
-          <h3><a name="ops_conf">Operation and Configuration</a></h3>
95
-
96
-          <dl class='pull-left'>
97
-            <dt>Q: Can DevStack handle a multi-node installation?</dt>
98
-            <dd>A: Indirectly, yes.  You run DevStack on each node with the appropriate configuration in <code>local.conf</code>.  The primary considerations are turning off the services not required on the secondary nodes, making sure the passwords match and setting the various API URLs to the right place.</dd>
99
-
100
-            <dt>Q: How can I document the environment that DevStack is using?</dt>
101
-            <dd>A: DevStack includes a script (<code>tools/info.sh</code>) that gathers the versions of the relevant installed apt packages, pip packages and git repos.  This is a good way to verify what Python modules are installed.</dd>
102
-
103
-            <dt>Q: How do I turn off a service that is enabled by default?</dt>
104
-            <dd>A: Services can be turned off by adding <code>disable_service xxx</code> to <code>local.conf</code> (using <code>n-vol</code> in this example):
105
-              <pre>disable_service n-vol</pre>
106
-            </dd>
107
-
108
-            <dt>Q: Is enabling a service that defaults to off done with the reverse of the above?</dt>
109
-            <dd>A: Of course!
110
-              <pre>enable_service qpid</pre>
111
-            </dd>
112
-
113
-            <dt>Q: How do I run a specific OpenStack milestone?</dt>
114
-            <dd>A: OpenStack milestones have tags set in the git repo.  Set the appropriate tag in the <code>*_BRANCH</code> variables in <code>local.conf</code>.  Swift is on its own release schedule so pick a tag in the Swift repo that is just before the milestone release.  For example:
115
-              <pre>[[local|localrc]]
116
-GLANCE_BRANCH=stable/grizzly
117
-HORIZON_BRANCH=stable/grizzly
118
-KEYSTONE_BRANCH=stable/grizzly
119
-NOVA_BRANCH=stable/grizzly
120
-GLANCE_BRANCH=stable/grizzly
121
-NEUTRON_BRANCH=stable/grizzly
122
-SWIFT_BRANCH=1.10.0</pre>
123
-            </dd>
124
-<!---  this is incomplete, remove it until populating the sql catalog is complete
125
-            <dt>Q: How do I use the SQL catalog backend in Keystone?</dt>
126
-            <dd>A: Comment out the template backend lines in the <code>[catalog]</code> section of <code>keystone/etc/keystone.conf</code> and add the SQL backend config like this:
127
-              <pre>[catalog]
128
-#driver = keystone.catalog.backends.templated.TemplatedCatalog
129
-#template_file = ./etc/default_catalog.templates
130
-driver = keystone.catalog.backends.sql.Catalog</pre>
131
-            </dd>
132
-            <dt>Q: Why not use <strike><code>tools/pip-requires</code></strike><code>requirements.txt</code> to grab project dependencies?</dt>
133
-            <dd><strike>The majority of deployments will use packages to install OpenStack that will have distro-based packages as dependencies.  DevStack installs as many of these Python packages as possible to mimic the expected production environemnt.</strike> Certain Linux distributions have a 'lack of workaround' in their Python configurations that installs vendor packaged Python modules and pip-installed modules to the SAME DIRECTORY TREE.  This is causing heartache and moving us in the direction of installing more modules from PyPI than vendor packages.  However, that is only being done as necessary as the packaging needs to catch up to the development cycle anyway so this is kept to a minimum.</dd>
134
-
135
-            <dt>Q: What can I do about RabbitMQ not wanting to start on my fresh new VM?</dt>
136
-            <dd>A: This is often caused by <code>erlang</code> not being happy with the hostname resolving to a reachable IP address.  Make sure your hostname resolves to a working IP address; setting it to 127.0.0.1 in <code>/etc/hosts</code> is often good enough for a single-node installation.  And in an extreme case, use <code>clean.sh</code> to eradicate it and try again.</dd>
137
-
138
-            <dt>Q: How can I set up Heat in stand-alone configuration?</dt>
139
-            <dd>A: Configure <code>local.conf</code> thusly:
140
-              <pre>[[local|localrc]]
141
-HEAT_STANDALONE=True
142
-ENABLED_SERVICES=rabbit,mysql,heat,h-api,h-api-cfn,h-api-cw,h-eng
143
-KEYSTONE_SERVICE_HOST=&lt;keystone-host&gt;
144
-KEYSTONE_AUTH_HOST=&lt;keystone-host&gt;</pre>
145
-            </dd>
146
-
147
-            <dt>Q: Why are my configuration changes ignored?</dt>
148
-            <dd>A: You may have run into the package prerequisite installation timeout.  <code>tools/install_prereqs.sh</code> has a timer that skips the package installation checks if it was run within the last <code>PREREQ_RERUN_HOURS</code> hours (default is 2).  To override this, set <code>FORCE_PREREQ=1</code> and the package checks will never be skipped.
149
-            </dd>
150
-          </dl>
151
-
152
-          <h3><a name="misc">Miscellaneous</a></h3>
153
-
154
-          <dl class='pull-left'>
155
-            <dt>Q: <code>tools/fixup_stuff.sh</code> is broken and shouldn't 'fix' just one version of packages.</dt>
156
-            <dd>A: [Another not-a-question]  No it isn't.  Stuff in there is to correct problems in an environment that need to be fixed elsewhere or may/will be fixed in a future release.  In the case of <code>httplib2</code> and <code>prettytable</code> specific problems with specific versions are being worked around.  If later releases have those problems than we'll add them to the script.  Knowing about the broken future releases is valuable rather than polling to see if it has been fixed.</dd>
157
-          </dl>
158
-        </div>
159
-
160
-      </section>
161
-
162
-      <footer>
163
-        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
164
-      </footer>
165
-
166
-    </div> <!-- /container -->
167
-  </body>
168
-</html>
169 1
deleted file mode 100644
... ...
@@ -1,336 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>Multi-Node Lab Server Guide - DevStack</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="../assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-    
22
-    <!-- Le javascripts -->
23
-    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="../overview.html">Overview</a></li>
35
-            <li><a href="../changes.html">Changes</a></li>
36
-            <li><a href="../faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container">
45
-
46
-      <section id="overview">
47
-        <h1>Multi-Node Lab: Serious Stuff</h1>
48
-        <p>Here is OpenStack in a realistic test configuration with multiple physical servers.</p>
49
-      </section>
50
-
51
-      <section id="prerequisites">
52
-        <div class="page-header">
53
-          <h2>Prerequisites <small>Linux & Network</small></h2>
54
-        </div>
55
-        
56
-        <h3>Minimal Install</h3>
57
-        <p>You need to have a system with a fresh install of Linux.  You can download the <a href="https://help.ubuntu.com/community/Installation/MinimalCD">Minimal CD</a> for Ubuntu releases since DevStack will download &amp; install all the additional dependencies.  The netinstall ISO is available for <a href="http://mirrors.kernel.org/fedora/releases/18/Fedora/x86_64/iso/Fedora-20-x86_64-netinst.iso">Fedora</a> and <a href="http://mirrors.kernel.org/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-netinstall.iso">CentOS/RHEL</a>.</p>
58
-
59
-        <p>Install a couple of packages to bootstrap configuration:</p>
60
-        <pre>apt-get install -y git sudo || yum install -y git sudo</pre>
61
-
62
-        <h3>Network Configuration</h3>
63
-        <p>The first iteration of the lab uses OpenStack's FlatDHCP network controller so
64
-        only a single network will be required.  It should be on its own subnet without DHCP;
65
-        the host IPs and floating IP pool(s) will come out of this block. This example 
66
-        uses the following:</p>
67
-        <ul>
68
-          <li>Gateway: 192.168.42.1</li>
69
-          <li>Physical nodes: 192.168.42.11-192.168.42.99</li>
70
-          <li>Floating IPs: 192.168.42.128-192.168.42.254</li>
71
-        </ul>
72
-        <p>Configure each node with a static IP.
73
-        For Ubuntu edit <code>/etc/network/interfaces</code>:</p>
74
-
75
-        <pre>auto eth0
76
-iface eth0 inet static
77
-    address 192.168.42.11
78
-    netmask 255.255.255.0
79
-    gateway 192.168.42.1
80
-</pre>
81
-        <p>For Fedora and CentOS/RHEL edit
82
-        <code>/etc/sysconfig/network-scripts/ifcfg-eth0</code>:</p>
83
-
84
-        <pre>BOOTPROTO=static
85
-IPADDR=192.168.42.11
86
-NETMASK=255.255.255.0
87
-GATEWAY=192.168.42.1
88
-</pre>
89
-
90
-<!-- save these for the VLAN version
91
-   auto eth0.926
92
-   iface eth0.926 inet static
93
-           address 10.4.144.3
94
-           netmask 255.255.240.0
95
-           #gateway 10.4.144.1
96
-           up ifconfig eth0.926
97
-   
98
-   auto eth0.605
99
-   iface eth0.605 inet static
100
-           address 172.16.103.3
101
-           netmask 255.255.255.0
102
-           #gateway 172.16.103.1
103
-           up ifconfig eth0.605 up
104
-
105
-      </section>
106
-
107
-      <section id="installation">
108
-        <div class="page-header">
109
-          <h2>Installation <small>shake and bake</small></h2>
110
-        </div>
111
-
112
-        <h3>Add the DevStack User</h3>
113
-        <p>OpenStack runs as a non-root user that has sudo access to root.  There is nothing special
114
-        about the name, we'll use <code>stack</code> here. Every node must use the same name and
115
-        preferably uid. If you created a user during the OS install you can use it and give it
116
-        sudo privileges below.  Otherwise create the stack user:</p>
117
-        <pre>groupadd stack
118
-useradd -g stack -s /bin/bash -d /opt/stack -m stack</pre>
119
-        <p>This user will be making many changes to your system during installation and operation
120
-        so it needs to have sudo privileges to root without a password:</p>
121
-        <pre>echo "stack ALL=(ALL) NOPASSWD: ALL" &gt;&gt; /etc/sudoers</pre>
122
-        <p>From here on use the <code>stack</code> user.  <b>Logout</b> and <b>login</b> as the 
123
-        <code>stack</code> user.</p>
124
-
125
-        <h3>Set Up Ssh</h3>
126
-        <p>Set up the stack user on each node with an ssh key for access:</p>
127
-        <pre>mkdir ~/.ssh; chmod 700 ~/.ssh
128
-echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCyYjfgyPazTvGpd8OaAvtU2utL8W6gWC4JdRS1J95GhNNfQd657yO6s1AH5KYQWktcE6FO/xNUC2reEXSGC7ezy+sGO1kj9Limv5vrvNHvF1+wts0Cmyx61D2nQw35/Qz8BvpdJANL7VwP/cFI/p3yhvx2lsnjFE3hN8xRB2LtLUopUSVdBwACOVUmH2G+2BWMJDjVINd2DPqRIA4Zhy09KJ3O1Joabr0XpQL0yt/I9x8BVHdAx6l9U0tMg9dj5+tAjZvMAFfye3PJcYwwsfJoFxC8w/SLtqlFX7Ehw++8RtvomvuipLdmWCy+T9hIkl+gHYE4cS3OIqXH7f49jdJf jesse@spacey.local" > ~/.ssh/authorized_keys</pre>
129
-
130
-        <h3>Download DevStack</h3>
131
-        <p>Grab the latest version of DevStack from github:</p>
132
-        <pre>git clone https://github.com/openstack-dev/devstack.git
133
-cd devstack</pre>
134
-
135
-        <p>Up to this point all of the steps apply to each node in the cluster.  From here on
136
-        there are some differences between the cluster controller (aka 'head node') and the
137
-        compute nodes.</p>
138
-
139
-        <h3>Configure Cluster Controller</h3>
140
-        <p>The cluster controller runs all OpenStack services.  Configure the cluster controller's DevStack in <code>local.conf</code>:</p>
141
-        <pre>[[local|localrc]]
142
-HOST_IP=192.168.42.11
143
-FLAT_INTERFACE=eth0
144
-FIXED_RANGE=10.4.128.0/20
145
-FIXED_NETWORK_SIZE=4096
146
-FLOATING_RANGE=192.168.42.128/25
147
-MULTI_HOST=1
148
-LOGFILE=/opt/stack/logs/stack.sh.log
149
-ADMIN_PASSWORD=labstack
150
-MYSQL_PASSWORD=supersecret
151
-RABBIT_PASSWORD=supersecrete
152
-SERVICE_PASSWORD=supersecrete
153
-SERVICE_TOKEN=xyzpdqlazydog</pre>
154
-<!-- save for vlan
155
-FLAT_INTERFACE=eth0.926
156
-
157
-        <p>In the multi-node configuration the first 10 or so IPs in the private subnet are usually reserved.  Add this to <code>local.sh</code> to have it run after every <code>stack.sh</code> run:</p>
158
-        <pre>for i in `seq 2 10`; do /opt/stack/nova/bin/nova-manage fixed reserve 10.4.128.$i; done</pre>
159
-
160
-        <p>Fire up OpenStack:</p>
161
-        <pre>./stack.sh</pre>
162
-        <p>A stream of activity ensues.  When complete you will see a summary of
163
-        <code>stack.sh</code>'s work, including the relevant URLs, accounts and passwords to poke at your
164
-        shiny new OpenStack.  The most recent log file is available in <code>stack.sh.log</code>.</p>
165
-
166
-        <h3>Configure Compute Nodes</h3>
167
-        <p>The compute nodes only run the OpenStack worker services.  For additional machines, create a <code>local.conf</code> with:</p>
168
-        <pre>HOST_IP=192.168.42.12 # change this per compute node
169
-FLAT_INTERFACE=eth0
170
-FIXED_RANGE=10.4.128.0/20
171
-FIXED_NETWORK_SIZE=4096
172
-FLOATING_RANGE=192.168.42.128/25
173
-MULTI_HOST=1
174
-LOGFILE=/opt/stack/logs/stack.sh.log
175
-ADMIN_PASSWORD=labstack
176
-MYSQL_PASSWORD=supersecret
177
-RABBIT_PASSWORD=supersecrete
178
-SERVICE_PASSWORD=supersecrete
179
-SERVICE_TOKEN=xyzpdqlazydog
180
-DATABASE_TYPE=mysql
181
-SERVICE_HOST=192.168.42.11
182
-MYSQL_HOST=192.168.42.11
183
-RABBIT_HOST=192.168.42.11
184
-GLANCE_HOSTPORT=192.168.42.11:9292
185
-ENABLED_SERVICES=n-cpu,n-net,n-api,c-sch,c-api,c-vol
186
-NOVA_VNC_ENABLED=True
187
-NOVNCPROXY_URL="http://192.168.42.11:6080/vnc_auto.html"
188
-VNCSERVER_LISTEN=$HOST_IP
189
-VNCSERVER_PROXYCLIENT_ADDRESS=$VNCSERVER_LISTEN
190
-</pre>
191
-
192
-<!-- save for vlan
193
-FLAT_INTERFACE=eth0.926
194
-
195
-        <p>Fire up OpenStack:</p>
196
-        <pre>./stack.sh</pre>
197
-        <p>A stream of activity ensues.  When complete you will see a summary of
198
-        <code>stack.sh</code>'s work, including the relevant URLs, accounts and passwords to poke at your
199
-        shiny new OpenStack.  The most recent log file is available in <code>stack.sh.log</code>.</p>
200
-
201
-        <h3>Cleaning Up After DevStack</h3>
202
-        <p>Shutting down OpenStack is now as simple as running the included <code>unstack.sh</code> script:</p>
203
-        <pre>./unstack.sh</pre>
204
-
205
-        <p>A more aggressive cleanup can be performed using <code>clean.sh</code>.  It removes certain troublesome packages and attempts to leave the system in a state where changing the database or queue manager can be reliably performed.
206
-        <pre>./clean.sh</pre>
207
-
208
-        <p>Sometimes running instances are not cleaned up.  DevStack attempts to do this when it
209
-        runs but there are times it needs to still be done by hand:</p>
210
-        <pre>sudo rm -rf /etc/libvirt/qemu/inst*
211
-sudo virsh list | grep inst | awk '{print $1}' | xargs -n1 virsh destroy</pre>
212
-
213
-      </section>
214
-
215
-      <section id="options">
216
-        <div class="page-header">
217
-          <h2>Options <small>pimp your stack</small></h2>
218
-        </div>
219
-
220
-        <h3>Additional Users</h3>
221
-        <p>DevStack creates two OpenStack users (<code>admin</code> and <code>demo</code>) and two tenants (also <code>admin</code> and <code>demo</code>).  <code>admin</code> is exactly what it sounds like, a privileged administrative account that is a member of both the <code>admin</code> and <code>demo</code> tenants.  <code>demo</code> is a normal user account that is only a member of the <code>demo</code> tenant.  Creating additional OpenStack users can be done through the dashboard, sometimes it is easier to do them in bulk from a script, especially since they get blown away every time
222
-        <code>stack.sh</code> runs.  The following steps are ripe for scripting:</p>
223
-        <pre># Get admin creds
224
-. openrc admin admin
225
-        
226
-# List existing tenants
227
-keystone tenant-list
228
-
229
-# List existing users
230
-keystone user-list
231
-
232
-# Add a user and tenant
233
-NAME=bob
234
-PASSWORD=BigSecrete
235
-TENANT=$NAME
236
-keystone tenant-create --name=$NAME
237
-keystone user-create --name=$NAME --pass=$PASSWORD
238
-keystone user-role-add --user-id=&lt;bob-user-id&gt; --tenant-id=&lt;bob-tenant-id&gt; --role-id=&lt;member-role-id&gt;
239
-# member-role-id comes from the existing member role created by stack.sh
240
-# keystone role-list</pre>
241
-
242
-        <h3>Swift</h3>
243
-        <p>Swift requires a significant amount of resources and is disabled by default in DevStack.
244
-        The support in DevStack is geared toward a minimal installation but can be used for
245
-        testing.  To implement a true multi-node test of Swift required more than DevStack provides.  
246
-        Enabling it is as simple as enabling the <code>swift</code> service in <code>local.conf</code>:
247
-        <pre>enable_service s-proxy s-object s-container s-account</pre>
248
-
249
-        <p>Swift will put its data files in <code>SWIFT_DATA_DIR</code> (default <code>/opt/stack/data/swift</code>).
250
-        The size of the data 'partition' created (really a loop-mounted file) is set by
251
-        <code>SWIFT_LOOPBACK_DISK_SIZE</code>.  The Swift config files are located in 
252
-        <code>SWIFT_CONFIG_DIR</code> (default <code>/etc/swift</code>).  All of these settings can be overridden in
253
-        (wait for it...) <code>local.conf</code>.</p>
254
-
255
-        <h3>Volumes</h3>
256
-        <p>DevStack will automatically use an existing LVM volume group named <code>stack-volumes</code> 
257
-        to store cloud-created volumes. If <code>stack-volumes</code> doesn't exist, DevStack 
258
-        will set up a 5Gb loop-mounted file to contain it.  This obviously limits the
259
-        number and size of volumes that can be created inside OpenStack.  The size can be
260
-        overridden by setting <code>VOLUME_BACKING_FILE_SIZE</code> in <code>local.conf</code>.</p>
261
-
262
-        <p><code>stack-volumes</code> can be pre-created on any physical volume supported by
263
-        Linux's LVM.  The name of the volume group can be changed by setting <code>VOLUME_GROUP</code>
264
-        in <code>localrc</code>. <code>stack.sh</code> deletes
265
-        all logical volumes in <code>VOLUME_GROUP</code> that begin with 
266
-        <code>VOLUME_NAME_PREFIX</code> as part of cleaning up from previous runs.
267
-        It is recommended to not use the root volume group as <code>VOLUME_GROUP</code>.</p>
268
-
269
-        <p>The details of creating the volume group depends on the server hardware involved 
270
-        but looks something like this:</p>
271
-        <pre>pvcreate /dev/sdc
272
-vgcreate stack-volumes /dev/sdc</pre>
273
-
274
-        <h3>Syslog</h3>
275
-        <p>DevStack is capable of using <code>rsyslog</code> to aggregate logging across the cluster.
276
-        It is off by default; to turn it on set <code>SYSLOG=True</code> in <code>local.conf</code>.
277
-        <code>SYSLOG_HOST</code> defaults to <code>HOST_IP</code>; on the compute nodes it 
278
-        must be set to the IP of the cluster controller to send syslog output there.  In the example
279
-        above, add this to the compute node <code>local.conf</code>:</p>
280
-        <pre>SYSLOG_HOST=192.168.42.11</pre>
281
-
282
-        <h3>Using Alternate Repositories/Branches</h3>
283
-        <p>The git repositories for all of the OpenStack services are defined in <code>stackrc</code>.
284
-        Since this file is a part of the DevStack package changes to it will probably be overwritten
285
-        as updates are applied.  Every setting in <code>stackrc</code> can be redefined in
286
-        <code>local.conf</code>.</p>
287
-
288
-        <p>To change the repository or branch that a particular OpenStack service is created from,
289
-        simply change the value of <code>*_REPO</code> or <code>*_BRANCH</code> corresponding to
290
-        that service.</p>
291
-
292
-        <p>After making changes to the repository or branch, if <code>RECLONE</code> is not set
293
-        in <code>localrc</code> it may be necessary to remove the corresponding directory from
294
-        <code>/opt/stack</code> to force git to re-clone the repository.</p>
295
-
296
-        <p>For example, to pull Nova from a proposed release candidate in the primary Nova 
297
-        repository:</p>
298
-        <pre>NOVA_BRANCH=rc-proposed</pre>
299
-
300
-        <p>To pull Glance from an experimental fork:</p>
301
-        <pre>GLANCE_BRANCH=try-something-big
302
-GLANCE_REPO=https://github.com/mcuser/glance.git</pre>
303
-
304
-      </section>
305
-
306
-      <section id="Notes">
307
-        <div class="page-header">
308
-          <h2>Notes <small>stuff you might need to know</small></h2>
309
-        </div>
310
-
311
-        <h3>Reset the Bridge</h3>
312
-        <p>How to reset the bridge configuration:</p>
313
-        <pre>sudo brctl delif br100 eth0.926
314
-sudo ip link set dev br100 down
315
-sudo brctl delbr br100</pre>
316
-<!--
317
-   sudo rm /etc/libvirt/qemu/*.xml
318
-
319
-        <h3>Set MySQL Password</h3>
320
-        <p>If you forgot to set the root password you can do this:</p>
321
-        <pre>mysqladmin -u root -pnova password 'supersecret'</pre>
322
-
323
-      </section>
324
-
325
-      <footer>
326
-        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
327
-      </footer>
328
-
329
-    </div> <!-- /container -->
330
-
331
-  </body>
332
-</html>
333 1
deleted file mode 100644
... ...
@@ -1,147 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>PXE Boot Server Guide - DevStack</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="../assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-    
22
-    <!-- Le javascripts -->
23
-    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="../overview.html">Overview</a></li>
35
-            <li><a href="../changes.html">Changes</a></li>
36
-            <li><a href="../faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container">
45
-      <section id="overview">
46
-        <h1>PXE Boot Server Guide: Magic Dust for Network Boot</h1>
47
-        <p>Boot DevStack from a PXE server to a RAM disk.</p>
48
-      </section>
49
-
50
-      <section id="requirements">
51
-        <div class="page-header">
52
-          <h2>Prerequisites <small>Hardware & OpenWRT</small></h2>
53
-        </div>
54
-        
55
-        <h3>Hardware</h3>
56
-        <p>The whole point of this exercise is to have a highly portable boot server, so using a small router with a USB port is the desired platform.  This guide uses a Buffalo WZR-HP-G300NH as an example, but it is easily generalized for other supported platforms. See openwrt.org for more.</p>
57
-        
58
-        <h3>OpenWRT</h3>
59
-        <p>Any recent 'Backfire' build of OpenWRT will work for the boot server project.  We build from trunk and have made the images available at <a href="http://openwrt.xr7.org/openwrt">http://openwrt.xr7.org/openwrt</a>.</p>
60
-      </section>
61
-
62
-      <section id="installation">
63
-        <div class="page-header">
64
-          <h2>Installation <small>bit blasting</small></h2>
65
-        </div>
66
-
67
-        <h3>Install the Image</h3>
68
-        <p>This process follows <a href="http://wiki.openwrt.org/toh/buffalo/wzr-hp-g300h">the OpenWRT doc OEM Install</a> to tftp the new image onto the router.  You need a computer to set up the router, we assume it is a recent Linux or OS/X installation.</p>
69
-        <ul>
70
-          <li>Get openwrt-ar71xx-wzr-hp-g300nh-squashfs-tftp.bin
71
-            <pre>wget http://openwrt.xr7.org/openwrt/ar71xx/openwrt-ar71xx-wzr-hp-g300nh-squashfs-tftp.bin</pre>
72
-          </li>
73
-          <li>Connect computer to LAN port 4 (closest to WAN port)</li>
74
-          <li>Set computer interface to IP address in the 192.168.11.2</li>
75
-          <li>Add static arp entry for router
76
-            <pre>arp -s 192.168.11.1 &lt;mac-address&gt;</pre>
77
-          </li>
78
-          <li>Start TFTP transfer attempt
79
-            <pre>tftp 192.168.11.1
80
-binary
81
-rexmt 1
82
-timeout 60
83
-put openwrt-ar71xx-wzr-hp-g300nh-squashfs-tftp.bin</pre>
84
-          </li>
85
-          <li>Power on router. Router will reboot and initialize on 192.168.1.1.</li>
86
-          <li>Delete static arp entry for router
87
-            <pre>arp -d 192.168.11.1</pre>
88
-          </li>
89
-          <li>Set computer to DHCP, connect and telnet to router and set root password.</li>
90
-        </ul>
91
-
92
-        <h3>Configure the Router</h3>
93
-        <ul>
94
-          <li>Update <code>/etc/opkg.conf</code> to point to our repo:
95
-            <pre>src/gz packages http://192.168.5.13/openwrt/build/ar71xx/packages</pre>
96
-          </li>
97
-          <li>Configure anon mounts:
98
-            <pre>uci delete fstab.@mount[0]
99
-uci commit fstab
100
-/etc/init.d/fstab restart</pre>
101
-          </li>
102
-          <li>Reset the DHCP address range.  DevStack will claim the upper 
103
-            /25 of the router's LAN address space for floating IPs so the
104
-            default DHCP address range needs to be moved:
105
-            <pre>uci set dhcp.lan.start=65
106
-uci set dhcp.lan.limit=60
107
-uci commit dhcp</pre>
108
-          </li>
109
-          <li>Enable TFTP:
110
-            <pre>uci set dhcp.@dnsmasq[0].enable_tftp=1
111
-uci set dhcp.@dnsmasq[0].tftp_root=/mnt/sda1/tftpboot
112
-uci set dhcp.@dnsmasq[0].dhcp_boot=pxelinux.0
113
-uci commit dhcp
114
-/etc/init.d/dnsmasq restart</pre>
115
-          </li>
116
-        </ul>
117
-
118
-        <h3>Set Up tftpboot</h3>
119
-        <ul>
120
-          <li>Create the <code>/tmp/tftpboot</code> structure and populate it:
121
-            <pre>cd ~/devstack
122
-tools/build_pxe_boot.sh /tmp</pre>
123
-            This calls <code>tools/build_ramdisk.sh</code> to create a 2GB ramdisk 
124
-            containing a complete development Oneiric OS plus the 
125
-            OpenStack code checkouts.
126
-          </li>
127
-          <li>Copy <code>tftpboot</code> to a USB drive:
128
-            <pre>mount /dev/sdb1 /mnt/tmp
129
-rsync -a /tmp/tftpboot/ /mnt/tmp/tftpboot/
130
-umount /mnt/tmp</pre>
131
-          </li>
132
-          <li>Plug USB drive into router.  It will be automounted and is ready to serve content.</li>
133
-        </ul>
134
-
135
-        <p>Now <a href="ramdisk.html">return</a> to the RAM disk Guide to kick
136
-           off your DevStack experience.</p>
137
-
138
-      </section>
139
-
140
-      <footer>
141
-        <p>&copy; Openstack Foundation 2011-2013 &mdash; this is not an official OpenStack project...</p>
142
-      </footer>
143
-
144
-    </div> <!-- /container -->
145
-
146
-  </body>
147
-</html>
148 1
deleted file mode 100644
... ...
@@ -1,119 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>RAMdisk Boot Guide - DevStack</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="../assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-    
22
-    <!-- Le javascripts -->
23
-    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="../overview.html">Overview</a></li>
35
-            <li><a href="../changes.html">Changes</a></li>
36
-            <li><a href="../faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container">
45
-      <section id="overview">
46
-        <h1>Stack-in-a-Box: Try before you mkfs</h1>
47
-        <p>Run DevStack from a RAM disk to give it a whirl before making the 
48
-           commitment to install it.  We'll cover booting from a USB drive or 
49
-           over the network via PXE.  We'll even thow in configuring a home
50
-           router to handle the PXE boot.  You will need a minimum of 3GB 
51
-           for both of these configurations as the RAM disk itself is 2GB.</p>
52
-      </section>
53
-
54
-      <section id="requirements">
55
-        <div class="page-header">
56
-          <h2>Prerequisites <small>Hardware</small></h2>
57
-        </div>
58
-        
59
-        <h3>USB Boot</h3>
60
-        <p><a href="usb-boot.html">This guide</a> covers the creation of a bootable USB drive.  Your 
61
-        computer BIOS must support booting from USB.</p>
62
-        
63
-        <h3>PXE Boot</h3>
64
-        <p><a href="pxe-boot.html">This guide</a> covers the installation of OpenWRT on a home router
65
-        and configuring it as a PXE server, plus the creation of the
66
-        boot images and PXE support files.
67
-      </section>
68
-
69
-      <section id="installation">
70
-        <div class="page-header">
71
-          <h2>Installation <small>bit blasting</small></h2>
72
-        </div>
73
-
74
-        <h3>Install DevStack</h3>
75
-        <p>Grab the latest version of DevStack via https:</p>
76
-		<pre>sudo apt-get install git -y
77
-git clone https://github.com/openstack-dev/devstack.git
78
-cd devstack</pre>
79
-
80
-        <h3>Prepare the Boot RAMdisk</h3>
81
-        <p>Pick your boot method and follow the guide to prepare to build
82
-           the RAM disk and set up the boot process:</p>
83
-        <ul>
84
-          <li><a href="usb-boot.html">USB boot</a></li>
85
-          <li><a href="pxe-boot.html">PXE boot</a></li>
86
-        </ul>
87
-
88
-        <h3>Fire It Up</h3>
89
-        <ul>
90
-          <li>Boot the computer into the RAM disk.  The details will vary from
91
-              machine to machine but most BIOSes have a method to select the
92
-              boot device, often by pressing F12 during POST.</li>
93
-          <li>Select 'DevStack' from the Boot Menu.</li>
94
-          <li>Log in with the 'stack' user and 'pass' password.</li>
95
-          <li>Create <code>devstack/localrc</code> if you wish to change any 
96
-              of the configuration variables.  You will probably want to at 
97
-              least set the admin login password to something memorable rather 
98
-              than the default 20 random characters:
99
-            <pre>ADMIN_PASSWORD=openstack</pre>
100
-          </li>
101
-          <li>Fire up OpenStack!
102
-            <pre>./run.sh</pre>
103
-          </li>
104
-          <li>See the processes running in screen:
105
-            <pre>screen -x</pre>
106
-          </li>
107
-          <li>Connect to the dashboard at <code>http://&lt;ip-address&gt;/</code></li>
108
-        </ul>
109
-
110
-      </section>
111
-
112
-      <footer>
113
-        <p>&copy; Openstack Foundation 2011-2013 &mdash; this is not an official OpenStack project...</p>
114
-      </footer>
115
-
116
-    </div> <!-- /container -->
117
-
118
-  </body>
119
-</html>
120 1
deleted file mode 100644
... ...
@@ -1,131 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>Single Machine Guide - DevStack</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="../assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-    
22
-    <!-- Le javascripts -->
23
-    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="../overview.html">Overview</a></li>
35
-            <li><a href="../changes.html">Changes</a></li>
36
-            <li><a href="../faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container">
45
-      <section id="overview">
46
-        <h1>All-In-One: Dedicated Hardware</h1>
47
-        <p>Things are about to get real!  Using OpenStack in containers or VMs is nice for kicking the tires, but doesn't compare to the feeling you get with hardware.</p>
48
-      </section>
49
-
50
-      <section id="prerequisites">
51
-        <div class="page-header">
52
-          <h2>Prerequisites <small>Linux & Network</small></h2>
53
-        </div>
54
-        
55
-        <h3>Minimal Install</h3>
56
-        <p>You need to have a system with a fresh install of Linux.  You can download the <a href="https://help.ubuntu.com/community/Installation/MinimalCD">Minimal CD</a> for Ubuntu releases since DevStack will download &amp; install all the additional dependencies.  The netinstall ISO is available for <a href="http://mirrors.kernel.org/fedora/releases/18/Fedora/x86_64/iso/Fedora-20-x86_64-netinst.iso">Fedora</a> and <a href="http://mirrors.kernel.org/centos/6.5/isos/x86_64/CentOS-6.5-x86_64-netinstall.iso">CentOS/RHEL</a>.  You may be tempted to use a desktop distro on a laptop, it will probably work but you may need to tell Network Manager to keep its fingers off the interface(s) that OpenStack uses for bridging.</p>
57
-        
58
-        <h3>Network Configuration</h3>
59
-        <p>Determine the network configuration on the interface used to integrate your 
60
-        OpenStack cloud with your existing network. For example, if the IPs given out on your network 
61
-        by DHCP are 192.168.1.X - where X is between 100 and 200 you will be able to use IPs 
62
-        201-254 for <b>floating ips</b>.</p>
63
-        <p>To make things easier later change your host to use a static IP instead of DHCP (i.e. 192.168.1.201).</p>
64
-      </section>
65
-
66
-      <section id="installation">
67
-        <div class="page-header">
68
-          <h2>Installation <small>shake and bake</small></h2>
69
-        </div>
70
-
71
-        <h3>Add your user</h3>
72
-        <p>We need to add a user to install DevStack.  (if you created a user during install you can skip this step and just give the user sudo privileges below)</p>
73
-        <pre>adduser stack</pre>
74
-        <p>Since this user will be making many changes to your system, it will need to have sudo privileges:</p>
75
-        <pre>apt-get install sudo -y || yum install -y sudo
76
-echo "stack ALL=(ALL) NOPASSWD: ALL" &gt;&gt; /etc/sudoers</pre>
77
-        <p>From here on you should use the user you created.  <b>Logout</b> and <b>login</b> as that user.</p>
78
-
79
-        <h3>Download DevStack</h3>
80
-        <p>We'll grab the latest version of DevStack via https:</p>
81
-        <pre>sudo apt-get install git -y || yum install -y git
82
-git clone https://github.com/openstack-dev/devstack.git
83
-cd devstack</pre>
84
-
85
-        <h3>Run DevStack</h3>
86
-        <p>Now to configure <code>stack.sh</code>.  DevStack includes a sample in <code>devstack/samples/local.conf</code>.  Create <code>local.conf</code> as shown below to do the following:</p>
87
-        <ul>
88
-          <li>Set <code>FLOATING_RANGE</code> to a range not used on the local network, i.e. 192.168.1.224/27.  This configures IP addresses ending in 225-254 to be used as floating IPs.</li>
89
-          <li>Set <code>FIXED_RANGE</code> and <code>FIXED_NETWORK_SIZE</code> to configure the internal address space used by the instances.</li>
90
-          <li>Set <code>FLAT_INTERFACE</code> to the Ethernet interface that connects the host to your local network.  This is the interface that should be configured with the static IP address mentioned above.</li>
91
-          <li>Set the administrative password.  This password is used for the <b>admin</b> and <b>demo</b> accounts set up as OpenStack users.</li>
92
-          <li>Set the MySQL administrative password.  The default here is a random hex string which is inconvenient if you need to look at the database directly for anything.</li>
93
-          <li>Set the RabbitMQ password.</li>
94
-          <li>Set the service password.  This is used by the OpenStack services (Nova, Glance, etc) to authenticate with Keystone.</li>
95
-        </ul>
96
-        <p><code>local.conf</code> should look something like this:</p>
97
-        <pre>[[local|localrc]]
98
-FLOATING_RANGE=192.168.1.224/27
99
-FIXED_RANGE=10.11.12.0/24
100
-FIXED_NETWORK_SIZE=256
101
-FLAT_INTERFACE=eth0
102
-ADMIN_PASSWORD=supersecret
103
-MYSQL_PASSWORD=iheartdatabases
104
-RABBIT_PASSWORD=flopsymopsy
105
-SERVICE_PASSWORD=iheartksl</pre>
106
-
107
-        <p>Run DevStack:</p>
108
-        <pre>./stack.sh</pre>
109
-        <p>A seemingly endless stream of activity ensues.  When complete you will see a summary of
110
-        <code>stack.sh</code>'s work, including the relevant URLs, accounts and passwords to poke at your
111
-        shiny new OpenStack.</p>
112
-
113
-        <h3>Using OpenStack</h3>
114
-        <p>At this point you should be able to access the dashboard from other computers on the 
115
-        local network.  In this example that would be http://192.168.1.201/ for the dashboard (aka Horizon).
116
-        Launch VMs and if you give them floating IPs and security group access those VMs will be accessible from other machines on your network.</p>
117
-
118
-        <p>Some examples of using the OpenStack command-line clients <code>nova</code> and <code>glance</code>
119
-        are in the shakedown scripts in <code>devstack/exercises</code>.  <code>exercise.sh</code>
120
-        will run all of those scripts and report on the results.</p>
121
-
122
-      </section>
123
-
124
-      <footer>
125
-        <p>&copy; Openstack Foundation 2011-2013 &mdash; An <a href="https://wiki.openstack.org/wiki/Programs">OpenStack program</a> created by <a href="http://www.rackspace.com/cloud/private_edition/">Rackspace Cloud Builders</a></p>
126
-      </footer>
127
-
128
-    </div> <!-- /container -->
129
-
130
-  </body>
131
-</html>
132 1
deleted file mode 100644
... ...
@@ -1,137 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>Single Machine Guide - DevStack</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="../assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-    
22
-    <!-- Le javascripts -->
23
-    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="../overview.html">Overview</a></li>
35
-            <li><a href="../changes.html">Changes</a></li>
36
-            <li><a href="../faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container">
45
-      <section id="overview">
46
-        <h1>Running a Cloud in a VM</h1>
47
-        <p>Use the cloud to build the cloud! Use your cloud to launch new versions of OpenStack 
48
-        in about 5 minutes.  When you break it, start over!  The VMs launched in the cloud will 
49
-        be slow as they are running in QEMU (emulation), but their primary use is testing
50
-        OpenStack development and operation.  Speed not required.</p>
51
-      </section>
52
-
53
-      <section id="prerequisites">
54
-        <div class="page-header">
55
-          <h2>Prerequisites <small>Cloud & Image</small></h2>
56
-        </div>
57
-
58
-        <h3>Virtual Machine</h3>
59
-        <p>DevStack should run in any virtual machine running a supported Linux release.  It will perform best with 2Gb or more of RAM.</p>
60
-
61
-        <h3>OpenStack Deployment &amp; cloud-init</h3>
62
-        <p>If the cloud service has an image with <code>cloud-init</code> pre-installed, use it.  You can
63
-        get one from <a href="http://uec-images.ubuntu.com">Ubuntu's Daily Build</a>
64
-        site if necessary.  This will enable you to launch VMs with userdata that installs 
65
-        everything at boot time.  The userdata script below will install and run
66
-        DevStack with a minimal configuration.  The use of <code>cloud-init</code>
67
-        is outside the scope of this document, refer to <a href"http://cloudinit.readthedocs.org/en/latest/index.html">the
68
-        <code>cloud-init</code> docs</a> for more information.</p>
69
-
70
-        <p>If you are directly using a hypervisor like Xen, kvm or VirtualBox you can manually kick off
71
-        the script below as a non-root user in a bare-bones server installation.</p>
72
-      </section>
73
-
74
-      <section id="requirements">
75
-        <div class="page-header">
76
-          <h2>Installation <small>shake and bake</small></h2>
77
-        </div>
78
-
79
-        <h3>Launching With Cloud-Init</h3>
80
-        <p>This cloud config grabs the latest version of DevStack via git, creates a minimal 
81
-        <code>local.conf</code> file and kicks off <code>stack.sh</code>.  It should
82
-        be passed as the user-data file when booting the VM.</p>
83
-        <pre>#cloud-config
84
-
85
-users:
86
-  - default
87
-  - name: stack
88
-    lock_passwd: False
89
-    sudo: ["ALL=(ALL) NOPASSWD:ALL\nDefaults:stack !requiretty"]
90
-    shell: /bin/bash
91
-
92
-write_files:
93
-  - content: |
94
-        #!/bin/sh
95
-        DEBIAN_FRONTEND=noninteractive sudo apt-get -qqy update || sudo yum update -qy
96
-        DEBIAN_FRONTEND=noninteractive sudo apt-get install -qqy git || sudo yum install -qy git
97
-        sudo chown stack:stack /home/stack
98
-        cd /home/stack
99
-        git clone https://github.com/openstack-dev/devstack.git
100
-        cd devstack
101
-        echo '[[local|localrc]]' > local.conf
102
-        echo ADMIN_PASSWORD=password >> local.conf
103
-        echo MYSQL_PASSWORD=password >> local.conf
104
-        echo RABBIT_PASSWORD=password >> local.conf
105
-        echo SERVICE_PASSWORD=password >> local.conf
106
-        echo SERVICE_TOKEN=tokentoken >> local.conf
107
-        ./stack.sh
108
-    path: /home/stack/start.sh
109
-    permissions: 0755
110
-
111
-runcmd:
112
-  - su -l stack ./start.sh</pre>
113
-        <p>As DevStack will refuse to run as root, this configures <code>cloud-init</code>
114
-        to create a non-root user and run the <code>start.sh</code> script as that user.</p>
115
-
116
-        <h3>Launching By Hand</h3>
117
-        <p>Using a hypervisor directly, launch the VM and either manually perform the steps in the 
118
-        embedded shell script above or copy it into the VM.</p>
119
-
120
-        <h3>Using OpenStack</h3>
121
-        <p>At this point you should be able to access the dashboard.  Launch VMs and if you give them floating IPs access those VMs from other machines on your network.</p>
122
-
123
-        <p>One interesting use case is for developers working on a VM on their laptop.  Once
124
-        <code>stack.sh</code> has completed once, all of the pre-requisite packages are installed
125
-        in the VM and the source trees checked out.  Setting <code>OFFLINE=True</code> in
126
-        <code>local.conf</code> enables <code>stack.sh</code> to run multiple times without an Internet
127
-        connection.  DevStack, making hacking at the lake possible since 2012!</p>
128
-      </section>
129
-
130
-      <footer>
131
-        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
132
-      </footer>
133
-
134
-    </div> <!-- /container -->
135
-
136
-  </body>
137
-</html>
138 1
deleted file mode 100644
... ...
@@ -1,99 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>USB Boot Server Guide - DevStack</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="../assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="../assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-    
22
-    <!-- Le javascripts -->
23
-    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="../overview.html">Overview</a></li>
35
-            <li><a href="../changes.html">Changes</a></li>
36
-            <li><a href="../faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container">
45
-      <section id="overview">
46
-        <h1>USB Boot: Undoable Stack Boot</h1>
47
-        <p>Boot DevStack from a USB disk into a RAM disk.</p>
48
-      </section>
49
-
50
-      <section id="requirements">
51
-        <div class="page-header">
52
-          <h2>Prerequisites</h2>
53
-        </div>
54
-        
55
-        <h3>Hardware</h3>
56
-        <p>This guide covers the creation of a bootable USB drive.  Your 
57
-           computer BIOS must support booting from USB and You will want at least 3GB of 
58
-           RAM.  You also will need a USB drive of at least 2GB.</p>
59
-
60
-        <h3>Software</h3>
61
-        <p>Ubuntu 11.10 (Oneiric Ocelot) is required on host to create images.</p>
62
-      </section>
63
-
64
-      <section id="installation">
65
-        <div class="page-header">
66
-          <h2>Installation <small>bit blasting</small></h2>
67
-        </div>
68
-
69
-        <h3>Set Up USB Drive</h3>
70
-        <ul>
71
-          <li>Insert the USB drive into the computer.  Make a note of the device name, such as 
72
-          <code>sdb</code>. Do not mount the device.</li>
73
-          <li>Install the boot system:
74
-            <pre>tools/build_usb_boot.sh /dev/sdb1</pre>
75
-            <p>This calls tools/build_ramdisk.sh to create a 2GB ramdisk 
76
-               containing a complete development Oneiric OS plus the 
77
-               OpenStack code checkouts.  It then writes a syslinux boot sector
78
-               to the specified device and creates <code>/syslinux</code>.</p>
79
-          </li>
80
-          <li>If desired, you may now mount the device:
81
-            <pre>mount /dev/sdb1 /mnt/tmp
82
-# foo
83
-umount /mnt/tmp</pre>
84
-          </li>
85
-        </ul>
86
-
87
-        <p>Now <a href="ramdisk.html">return</a> to the RAM disk Guide to kick
88
-           off your DevStack experience.</p>
89
-
90
-      </section>
91
-
92
-      <footer>
93
-        <p>&copy; Openstack Foundation 2011-2013 &mdash; this is not an official OpenStack project...</p>
94
-      </footer>
95
-
96
-    </div> <!-- /container -->
97
-
98
-  </body>
99
-</html>
100 1
deleted file mode 100644
... ...
@@ -1,562 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>DevStack - Deploying OpenStack for Developers</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-
22
-    <!-- Le javascripts -->
23
-    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="overview.html">Overview</a></li>
35
-            <li><a href="changes.html">Changes</a></li>
36
-            <li><a href="faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container" id="home">
45
-
46
-      <div class="hero-unit">
47
-        <div class="pull-left">
48
-          <h1 id="main_header">DevStack - an OpenStack Community Production</h1>
49
-          <div class="sub_header">
50
-            <p></p>
51
-            <p>A documented shell script to build complete OpenStack development environments. <br /><br />
52
-              An OpenStack program maintained by the developer community.</p>
53
-          </div>
54
-        </div>
55
-        <div class="pull-left">
56
-          <ol id="getting_started">
57
-            <li id="ubuntu">Setup a fresh supported Linux installation.</li>
58
-            <li id="github">
59
-              Clone devstack from devstack.
60
-              <pre>git clone https://github.com/openstack-dev/devstack.git</pre>
61
-            </li>
62
-            <li id="install">
63
-              Deploy your OpenStack Cloud
64
-              <pre>cd devstack &amp;&amp; ./stack.sh</pre>
65
-            </li>
66
-          </ol>
67
-        </div>
68
-        <div class="clear">&nbsp;</div>
69
-      </div>
70
-
71
-
72
-      <section id="quickstart" class="span12">
73
-        <div class="page-header">
74
-          <h2>Quick Start <small>This ain't your first rodeo</small></h2>
75
-        </div>
76
-        <ol>
77
-            <li value="0">
78
-              <h3>Select a Linux Distribution</h3>
79
-              <p>Only Ubuntu 14.04 (Trusty), Fedora 20 and CentOS/RHEL 6.5 are documented here.  OpenStack also runs and is packaged on other flavors of Linux such as OpenSUSE and Debian.</p>
80
-            </li>
81
-            <li>
82
-              <h3>Install Selected OS</h3>
83
-              <p>In order to correctly install all the dependencies, we assume a specific minimal version of the supported distributions to make it as easy as possible.  We recommend using a minimal install of Ubuntu or Fedora server in a VM if this is your first time.</p>
84
-            </li>
85
-            <li>
86
-              <h3>Download DevStack</h3>
87
-              <pre>git clone https://github.com/openstack-dev/devstack.git</pre>
88
-              <p>The <code>devstack</code> repo contains a script that installs OpenStack and templates for configuration files</p>
89
-            </li>
90
-            <li>
91
-              <h3>Configure</h3>
92
-              <p>We recommend at least a <a href="configuration.html">minimal configuration</a> be set up.</p>
93
-            </li>
94
-            <li>
95
-              <h3>Start the install</h3>
96
-              <pre>cd devstack; ./stack.sh</pre>
97
-              <p>It takes a few minutes, we recommend <a href="stack.sh.html">reading the script</a> while it is building.</p>
98
-            </li>
99
-        </ol>
100
-      </section>
101
-
102
-      <section id="guides" class='span12'>
103
-        <div class="page-header">
104
-          <h2>Guides <small>Walk through various setups used by stackers</small></h2>
105
-        </div>
106
-
107
-        <div class='row span8'>
108
-          <h2>OpenStack on VMs</h2>
109
-          <table class='table table-striped table-bordered'>
110
-            <thead>
111
-              <tr>
112
-                <th>Title</th>
113
-                <th>Description</th>
114
-                <th>Link</th>
115
-              </tr>
116
-            </thead>
117
-            <tbody>
118
-              <tr>
119
-                <td>Virtual Machine</td>
120
-                <td>Run OpenStack in a VM.  The VMs launched in your cloud will be slow as they are running in QEMU (emulation), but it is useful if you don't have spare hardware laying around.</td>
121
-                <td><a class="btn btn-small btn-primary table-action" href="guides/single-vm.html">Read &raquo;</a></td>
122
-              </tr>
123
-
124
-<!--
125
-              <tr>
126
-                <td>LXC Containers</td>
127
-                <td>Already running Ubuntu on your machine?  Using containers lets you build even faster.</td>
128
-                <td>Coming soon!</td>
129
-              </tr>
130
-            </tbody>
131
-            <tfoot>
132
-              <td colspan="3">1 Guide</td>
133
-            </tfoot>
134
-          </table>
135
-        </div>
136
-        <div class="wat span3 pull-right">
137
-          <h4>What is this?</h4>
138
-          <p>These guides tell you how to virtualize your OpenStack cloud in virtual machines. This means that you can get started without having to purchase any hardware.</p>
139
-        </div>
140
-
141
-        <div class='row span8'>
142
-          <h2>OpenStack on Hardware</h2>
143
-          <table class='table table-striped table-bordered'>
144
-            <thead>
145
-              <tr>
146
-                <th>Title</th>
147
-                <th>Description</th>
148
-                <th>Link</th>
149
-              </tr>
150
-            </thead>
151
-            <tbody>
152
-              <tr>
153
-                <td>All-In-One</td>
154
-                <td>Run OpenStack on dedicated hardware to get real performance in your VMs.  This can include a server-class machine or a laptop at home.</td>
155
-                <td><a class="btn btn-small btn-primary table-action" href="guides/single-machine.html">Read &raquo;</a></td>
156
-              </tr>
157
-
158
-              <tr>
159
-                <td>Multi-Node + VLANs</td>
160
-                <td>Setup a multi-node cluster with dedicated VLANs for VMs &amp; Management.</td>
161
-                <td><a class="btn btn-small btn-primary table-action" href="guides/multinode-lab.html">Read &raquo;</a></td>
162
-              </tr>
163
-
164
-<!--
165
-              <tr>
166
-                <td>Stack-in-a-Box</td>
167
-                <td>Run OpenStack from a RAM disk to give it a spin without touching your existing OS installation.  Includes PXE and USB boot methods.</td>
168
-                <td><a class="btn btn-small btn-primary table-action" href="guides/ramdisk.html">Read &raquo;</a></td>
169
-              </tr>
170
-            </tbody>
171
-            <tfoot>
172
-              <td colspan="3">2 Guides</td>
173
-            </tfoot>
174
-          </table>
175
-        </div>
176
-        <div class="wat span3 pull-right">
177
-          <h4>What is this?</h4>
178
-          <p>These guides tell you how to deploy a development environment on real hardware. Guides range from running OpenStack on a single laptop to running a multi-node deployment on datacenter hardware.</p>
179
-        </div>
180
-
181
-      </section>
182
-
183
-      <section id="docs" class="span12">
184
-        <div class="page-header">
185
-          <h2>Documentation <small>Help yourself to stack</small></h2>
186
-        </div>
187
-
188
-        <div class='row span5 pull-left'>
189
-          <h2>Overview</h2>
190
-          <p><a href="overview.html">An overview of DevStack goals and priorities</a></p>
191
-          <h2>Configuration</h2>
192
-          <p><a href="configuration.html">Configuring and customizing the stack</a></p>
193
-          <h2>Plugins</h2>
194
-          <p><a href="plugins.html">Extending DevStack with new features</a></p>
195
-        </div>
196
-
197
-        <div class='span5 pull-right'>
198
-          <h2>Recent Changes</h2>
199
-          <p><a href="changes.html">An incomplete summary of recent changes</a></p>
200
-          <h2>FAQ</h2>
201
-          <p><a href="faq.html">The DevStack FAQ</a></p>
202
-          <h2>Contributing</h2>
203
-          <p><a href="contributing.html">Pitching in to make DevStack a better place</a></p>
204
-        </div>
205
-
206
-      </section>
207
-
208
-      <section id="docs" class="span12">
209
-        <div class="page-header">
210
-          <h2>Code <small>A look at the bits that make it all go</small></h2>
211
-        </div>
212
-
213
-        <div class='row span5 pull-left'>
214
-          <h2>Scripts <small>Generated documentation of DevStack scripts.</small></h2>
215
-          <table class='table table-striped table-bordered'>
216
-            <thead>
217
-              <tr>
218
-                <th>Filename</th>
219
-                <th>Link</th>
220
-              </tr>
221
-            </thead>
222
-            <tbody>
223
-              <tr>
224
-                <td>stack.sh</td>
225
-                <td><a href="stack.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
226
-              </tr>
227
-              <tr>
228
-                <td>functions</td>
229
-                <td><a href="functions.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
230
-              </tr>
231
-              <tr>
232
-                <td>functions-common</td>
233
-                <td><a href="functions-common.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
234
-              </tr>
235
-              <tr>
236
-                <td>lib/apache</td>
237
-                <td><a href="lib/apache.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
238
-              </tr>
239
-              <tr>
240
-                <td>lib/baremetal</td>
241
-                <td><a href="lib/baremetal.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
242
-              </tr>
243
-              <tr>
244
-                <td>lib/ceilometer</td>
245
-                <td><a href="lib/ceilometer.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
246
-              </tr>
247
-              <tr>
248
-                <td>lib/cinder</td>
249
-                <td><a href="lib/cinder.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
250
-              </tr>
251
-              <tr>
252
-                <td>lib/config</td>
253
-                <td><a href="lib/config.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
254
-              </tr>
255
-              <tr>
256
-                <td>lib/database</td>
257
-                <td><a href="lib/database.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
258
-              </tr>
259
-              <tr>
260
-                <td>lib/glance</td>
261
-                <td><a href="lib/glance.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
262
-              </tr>
263
-              <tr>
264
-                <td>lib/heat</td>
265
-                <td><a href="lib/heat.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
266
-              </tr>
267
-              <tr>
268
-                <td>lib/horizon</td>
269
-                <td><a href="lib/horizon.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
270
-              </tr>
271
-              <tr>
272
-                <td>lib/infra</td>
273
-                <td><a href="lib/infra.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
274
-              </tr>
275
-              <tr>
276
-                <td>lib/ironic</td>
277
-                <td><a href="lib/ironic.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
278
-              </tr>
279
-              <tr>
280
-                <td>lib/keystone</td>
281
-                <td><a href="lib/keystone.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
282
-              </tr>
283
-              <tr>
284
-                <td>lib/ldap</td>
285
-                <td><a href="lib/ldap.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
286
-              </tr>
287
-              <tr>
288
-                <td>lib/zaqar</td>
289
-                <td><a href="lib/zaqar.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
290
-              </tr>
291
-              <tr>
292
-                <td>lib/neutron</td>
293
-                <td><a href="lib/neutron.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
294
-              </tr>
295
-              <tr>
296
-                <td>lib/nova</td>
297
-                <td><a href="lib/nova.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
298
-              </tr>
299
-              <tr>
300
-                <td>lib/oslo</td>
301
-                <td><a href="lib/oslo.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
302
-              </tr>
303
-              <tr>
304
-                <td>lib/rpc_backend</td>
305
-                <td><a href="lib/rpc_backend.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
306
-              </tr>
307
-              <tr>
308
-                <td>lib/sahara</td>
309
-                <td><a href="lib/sahara.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
310
-              </tr>
311
-              <tr>
312
-                <td>lib/savanna</td>
313
-                <td><a href="lib/savanna.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
314
-              </tr>
315
-              <tr>
316
-                <td>lib/stackforge</td>
317
-                <td><a href="lib/stackforge.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
318
-              </tr>
319
-              <tr>
320
-                <td>lib/swift</td>
321
-                <td><a href="lib/swift.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
322
-              </tr>
323
-              <tr>
324
-                <td>lib/tempest</td>
325
-                <td><a href="lib/tempest.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
326
-              </tr>
327
-              <tr>
328
-                <td>lib/tls</td>
329
-                <td><a href="lib/tls.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
330
-              </tr>
331
-              <tr>
332
-                <td>lib/trove</td>
333
-                <td><a href="lib/trove.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
334
-              </tr>
335
-              <tr>
336
-                <td>unstack.sh</td>
337
-                <td><a href="unstack.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
338
-              </tr>
339
-              <tr>
340
-                <td>clean.sh</td>
341
-                <td><a href="clean.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
342
-              </tr>
343
-              <tr>
344
-                <td>run_tests.sh</td>
345
-                <td><a href="run_tests.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
346
-              </tr>
347
-              <tr>
348
-                <td>extras.d/50-ironic.sh</td>
349
-                <td><a href="extras.d/50-ironic.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
350
-              </tr>
351
-              <tr>
352
-                <td>extras.d/70-zaqar.sh</td>
353
-                <td><a href="extras.d/70-zaqar.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
354
-              </tr>
355
-              <tr>
356
-                <td>extras.d/70-sahara.sh</td>
357
-                <td><a href="extras.d/70-sahara.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
358
-              </tr>
359
-              <tr>
360
-                <td>extras.d/70-savanna.sh</td>
361
-                <td><a href="extras.d/70-savanna.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
362
-              </tr>
363
-              <tr>
364
-                <td>extras.d/70-trove.sh</td>
365
-                <td><a href="extras.d/70-trove.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
366
-              </tr>
367
-              <tr>
368
-                <td>extras.d/80-opendaylight.sh</td>
369
-                <td><a href="extras.d/80-opendaylight.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
370
-              </tr>
371
-              <tr>
372
-                <td>extras.d/80-tempest.sh</td>
373
-                <td><a href="extras.d/80-tempest.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
374
-              </tr>
375
-            </tbody>
376
-          </table>
377
-        </div>
378
-
379
-        <div class='span5 pull-right'>
380
-          <h2>Configuration <small>Setting the table</small></h2>
381
-          <table class='table table-striped table-bordered'>
382
-            <thead>
383
-              <tr>
384
-                <th>Filename</th>
385
-                <th>Link</th>
386
-              </tr>
387
-            </thead>
388
-            <tbody>
389
-              <tr>
390
-                <td>local.conf</td>
391
-                <td><a href="local.conf.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
392
-              </tr>
393
-              <tr>
394
-                <td>stackrc</td>
395
-                <td><a href="stackrc.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
396
-              </tr>
397
-              <tr>
398
-                <td>openrc</td>
399
-                <td><a href="openrc.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
400
-              </tr>
401
-              <tr>
402
-                <td>exerciserc</td>
403
-                <td><a href="exerciserc.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
404
-              </tr>
405
-              <tr>
406
-                <td>eucarc</td>
407
-                <td><a href="eucarc.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
408
-              </tr>
409
-            </tbody>
410
-          </table>
411
-
412
-          <h2>Tools <small>Support scripts</small></h2>
413
-          <table class='table table-striped table-bordered'>
414
-            <thead>
415
-              <tr>
416
-                <th>Filename</th>
417
-                <th>Link</th>
418
-              </tr>
419
-            </thead>
420
-            <tbody>
421
-              <tr>
422
-                <td>tools/info.sh</td>
423
-                <td><a href="tools/info.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
424
-              </tr>
425
-              <tr>
426
-                <td>tools/build_docs.sh</td>
427
-                <td><a href="tools/build_docs.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
428
-              </tr>
429
-              <tr>
430
-                <td>tools/create_userrc.sh</td>
431
-                <td><a href="tools/create_userrc.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
432
-              </tr>
433
-              <tr>
434
-                <td>tools/fixup_stuff.sh</td>
435
-                <td><a href="tools/fixup_stuff.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
436
-              </tr>
437
-              <tr>
438
-                <td>tools/install_prereqs.sh</td>
439
-                <td><a href="tools/install_prereqs.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
440
-              </tr>
441
-              <tr>
442
-                <td>tools/install_pip.sh</td>
443
-                <td><a href="tools/install_pip.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
444
-              </tr>
445
-              <tr>
446
-                <td>tools/upload_image.sh</td>
447
-                <td><a href="tools/upload_image.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
448
-              </tr>
449
-            </tbody>
450
-          </table>
451
-
452
-          <h2>Samples <small>Generated documentation of DevStack sample files.</small></h2>
453
-          <table class='table table-striped table-bordered'>
454
-            <thead>
455
-              <tr>
456
-                <th>Filename</th>
457
-                <th>Link</th>
458
-              </tr>
459
-            </thead>
460
-            <tbody>
461
-              <tr>
462
-                <td>local.sh</td>
463
-                <td><a href="samples/local.sh.html" class="btn btn-small btn-success table-action">Read &raquo;</a></td>
464
-              </tr>
465
-              <tr>
466
-                <td>localrc</td>
467
-                <td><a href="samples/localrc.html" class="btn btn-small btn-success table-action">Read &raquo;</a></td>
468
-              </tr>
469
-            </tbody>
470
-          </table>
471
-
472
-        <div class='row span5 pull-right'>
473
-          <h2>Exercises <small>Generated documentation of DevStack scripts.</small></h2>
474
-          <table class='table table-striped table-bordered'>
475
-            <thead>
476
-              <tr>
477
-                <th>Filename</th>
478
-                <th>Link</th>
479
-              </tr>
480
-            </thead>
481
-            <tbody>
482
-              <tr>
483
-                <td>exercise.sh</td>
484
-                <td><a href="exercise.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
485
-              </tr>
486
-              <tr>
487
-                <td>exercises/aggregates.sh</td>
488
-                <td><a href="exercises/aggregates.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
489
-              </tr>
490
-              <tr>
491
-                <td>exercises/boot_from_volume.sh</td>
492
-                <td><a href="exercises/boot_from_volume.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
493
-              </tr>
494
-              <tr>
495
-                <td>exercises/bundle.sh</td>
496
-                <td><a href="exercises/bundle.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
497
-              </tr>
498
-              <tr>
499
-                <td>exercises/client-args.sh</td>
500
-                <td><a href="exercises/client-args.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
501
-              </tr>
502
-              <tr>
503
-                <td>exercises/client-env.sh</td>
504
-                <td><a href="exercises/client-env.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
505
-              </tr>
506
-              <tr>
507
-                <td>exercises/euca.sh</td>
508
-                <td><a href="exercises/euca.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
509
-              </tr>
510
-              <tr>
511
-                <td>exercises/floating_ips.sh</td>
512
-                <td><a href="exercises/floating_ips.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
513
-              </tr>
514
-              <tr>
515
-                <td>exercises/horizon.sh</td>
516
-                <td><a href="exercises/horizon.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
517
-              </tr>
518
-              <tr>
519
-                <td>exercises/neutron-adv-test.sh</td>
520
-                <td><a href="exercises/neutron-adv-test.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
521
-              </tr>
522
-                <td>exercises/sahara.sh</td>
523
-                <td><a href="exercises/sahara.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
524
-              </tr>
525
-                <td>exercises/savanna.sh</td>
526
-                <td><a href="exercises/savanna.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
527
-              </tr>
528
-              <tr>
529
-                <td>exercises/sec_groups.sh</td>
530
-                <td><a href="exercises/sec_groups.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
531
-              </tr>
532
-              <tr>
533
-                <td>exercises/swift.sh</td>
534
-                <td><a href="exercises/swift.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
535
-              </tr>
536
-                <td>exercises/trove.sh</td>
537
-                <td><a href="exercises/trove.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
538
-              </tr>
539
-              <tr>
540
-                <td>exercises/volumes.sh</td>
541
-                <td><a href="exercises/volumes.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
542
-              </tr>
543
-              <tr>
544
-                <td>exercises/zaqar.sh</td>
545
-                <td><a href="exercises/zaqar.sh.html" class="btn btn-small btn-primary table-action">Read &raquo;</a></td>
546
-              </tr>
547
-            </tbody>
548
-          </table>
549
-
550
-        </div>
551
-
552
-      </section>
553
-
554
-      <footer>
555
-        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
556
-      </footer>
557
-
558
-    </div> <!-- /container -->
559
-  </body>
560
-</html>
561 1
deleted file mode 100644
... ...
@@ -1,64 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>DevStack - local.conf</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-
22
-    <!-- Le javascripts -->
23
-    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="overview.html">Overview</a></li>
35
-            <li><a href="changes.html">Changes</a></li>
36
-            <li><a href="faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container">
45
-
46
-      <section class="span12">
47
-        <div class="page-header">
48
-          <h2>local.conf <small>User settings</small></h2>
49
-          <p><code>local.conf</code> is a user-maintained setings file that is
50
-          sourced in <code>stackrc</code>.  It contains a section that replaces
51
-          the historical <code>localrc</code> file.  See
52
-          <a href="configuration.html">the description of local.conf</a> for
53
-          more details about the mechanics of the file.</p>
54
-        </div>
55
-      </section
56
-
57
-      <footer>
58
-        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
59
-      </footer>
60
-
61
-    </div> <!-- /container -->
62
-
63
-  </body>
64
-</html>
65 1
deleted file mode 100644
... ...
@@ -1,60 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>DevStack - localrc</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-
22
-    <!-- Le javascripts -->
23
-    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="overview.html">Overview</a></li>
35
-            <li><a href="changes.html">Changes</a></li>
36
-            <li><a href="faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container">
45
-
46
-      <section class="span12">
47
-        <div class="page-header">
48
-          <h2>localrc <small>User settings</small></h2>
49
-          <p><code>localrc</code> is the old file used to configure DevStack.  It is deprecated and has been replaced by <a href="local.conf.html"><code>local.conf</code></a>.  DevStack will continue to use <code>localrc</code> if it is present and ignore the <code>localrc</code> section in <code>local.conf.</code>.   Remove <code>localrc</code> to switch to using the new file.</p>
50
-        </div>
51
-      </section
52
-
53
-      <footer>
54
-        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
55
-      </footer>
56
-
57
-    </div> <!-- /container -->
58
-
59
-  </body>
60
-</html>
61 1
deleted file mode 100644
... ...
@@ -1,115 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>DevStack - openrc</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-    
22
-    <!-- Le javascripts -->
23
-    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="overview.html">Overview</a></li>
35
-            <li><a href="changes.html">Changes</a></li>
36
-            <li><a href="faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container">
45
-
46
-      <section class="span12">
47
-        <div class="page-header">
48
-          <h2>openrc <small>User authentication settings</small></h2>
49
-          <p><code>openrc</code> configures login credentials suitable for use
50
-          with the OpenStack command-line tools.  <code>openrc</code> sources
51
-          <code>stackrc</code> at the beginning (which in turn sources
52
-          the <code>localrc</code> setion of <code>local.conf</code>) in
53
-          order to pick up <code>HOST_IP</code>
54
-          and/or <code>SERVICE_HOST</code> to use in the endpoints.
55
-          The values shown below are the default values.</p>
56
-        </div>
57
-        <dl>
58
-
59
-          <dt>OS_TENANT_NAME</dt>
60
-          <dd>The introduction of Keystone to the OpenStack ecosystem has standardized the
61
-            term <em>tenant</em> as the entity that owns resources.  In some places references
62
-            still exist to the original Nova term <em>project</em> for this use.  Also,
63
-            <em>tenant_name</em> is preferred to <em>tenant_id</em>.
64
-            <pre>OS_TENANT_NAME=demo</pre></dd>
65
-
66
-          <dt>OS_USERNAME</dt>
67
-          <dd>In addition to the owning entity (tenant), Nova stores the entity performing
68
-            the action as the <em>user</em>.
69
-            <pre>OS_USERNAME=demo</pre></dd>
70
-
71
-          <dt>OS_PASSWORD</dt>
72
-          <dd>With Keystone you pass the keystone password instead of an api key.
73
-            Recent versions of novaclient use OS_PASSWORD instead of NOVA_API_KEYs
74
-            or NOVA_PASSWORD.
75
-            <pre>OS_PASSWORD=secrete</pre></dd>
76
-
77
-          <dt>HOST_IP, SERVICE_HOST</dt>
78
-          <dd>Set API endpoint host using <code>HOST_IP</code>.  <code>SERVICE_HOST</code>
79
-            may also be used to specify the endpoint, which is convenient for
80
-            some <code>localrc</code> configurations.  Typically, <code>HOST_IP</code>
81
-            is set in the <code>localrc</code> section.
82
-            <pre>HOST_IP=127.0.0.1
83
-SERVICE_HOST=$HOST_IP</pre></dd>
84
-
85
-          <dt>OS_AUTH_URL</dt>
86
-          <dd>Authenticating against an OpenStack cloud using Keystone returns a <em>Token</em>
87
-            and <em>Service Catalog</em>.  The catalog contains the endpoints for all services
88
-            the user/tenant has access to - including Nova, Glance, Keystone and Swift.
89
-            <pre>OS_AUTH_URL=http://$SERVICE_HOST:5000/v2.0</pre></dd>
90
-
91
-          <dt>GLANCE_HOST</dt>
92
-          <dd>Some exercises call Glance directly.  On a single-node installation, Glance
93
-            should be listening on <code>HOST_IP</code>.  If its running elsewhere
94
-            it can be set here.
95
-            <pre>GLANCE_HOST=$HOST_IP</pre></dd>
96
-
97
-          <dt>KEYSTONECLIENT_DEBUG, NOVACLIENT_DEBUG</dt>
98
-          <dd>Set command-line client log level to <code>DEBUG</code>.  These are
99
-            commented out by default.
100
-            <pre># export KEYSTONECLIENT_DEBUG=1
101
-# export NOVACLIENT_DEBUG=1</pre></dd>
102
-
103
-        </dl>
104
-      </section
105
-
106
-      <footer>
107
-        <p>&copy; Openstack Foundation 2011-2013 &mdash; An
108
-        <a href="https://wiki.openstack.org/wiki/Programs">OpenStack program</a>
109
-        created by <a href="http://www.rackspace.com/cloud/private_edition/">Rackspace Cloud Builders</a></p>
110
-      </footer>
111
-
112
-    </div> <!-- /container -->
113
-
114
-  </body>
115
-</html>
116 1
deleted file mode 100644
... ...
@@ -1,118 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>DevStack - Overview</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-    
22
-    <!-- Le javascripts -->
23
-    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="overview.html">Overview</a></li>
35
-            <li><a href="changes.html">Changes</a></li>
36
-            <li><a href="faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container" id="home">
45
-      
46
-      <section id="overview" class="span12">
47
-
48
-        <div class='row pull-left'>
49
-          <h2>Overview <small>DevStack from a cloud-height view</small></h2>
50
-          <p>DevStack has evolved to support a large number of configuration options and alternative platforms and support services.  That evolution has grown well beyond what was originally intended and the majority of configuration combinations are rarely, if ever, tested.  DevStack is not a general OpenStack installer and was never meant to be everything to everyone..</p>
51
-          <p>Below is a list of what is specifically is supported (read that as "tested") going forward.</p>
52
-
53
-          <h2>Supported Components</h2>
54
-
55
-          <h3>Base OS</h3>
56
-          <p><em>The OpenStack Technical Committee (TC) has defined the current CI strategy to include the latest Ubuntu release and the latest RHEL release (for Python 2.6 testing).</em></p>
57
-          <ul>
58
-            <li>Ubuntu: current LTS release plus current development release</li>
59
-            <li>Fedora: current release plus previous release</li>
60
-            <li>RHEL: current major release</li>
61
-            <li>Other OS platforms may continue to be included but the maintenance of those platforms shall not be assumed simply due to their presence.  Having a listed point-of-contact for each additional OS will greatly increase its chance of being well-maintained.</li>
62
-            <li>Patches for Ubuntu and/or Fedora will not be held up due to side-effects on other OS platforms.</li>
63
-          </ul>
64
-
65
-          <h3>Databases</h3>
66
-          <p><em>As packaged by the host OS</em></p>
67
-          <ul>
68
-            <li>MySQL</li>
69
-            <li>PostgreSQL</li>
70
-          </ul>
71
-
72
-          <h3>Queues</h3>
73
-          <p><em>As packaged by the host OS</em></p>
74
-          <ul>
75
-            <li>Rabbit</li>
76
-            <li>Qpid</li>
77
-<!--
78
-            <li>ZeroMQ</li>
79
-          </ul>
80
-
81
-          <h3>Web Server</h3>
82
-          <p><em>As packaged by the host OS</em></p>
83
-          <ul>
84
-            <li>Apache</li>
85
-          </ul>
86
-
87
-          <h3>OpenStack Network</h3>
88
-          <p><em>Default to Nova Network, optionally use Neutron</em></p>
89
-          <ul>
90
-            <li>Nova Network: FlatDHCP</li>
91
-            <li>Neutron: A basic configuration approximating the original FlatDHCP mode using linuxbridge or OpenVSwitch.</li>
92
-          </ul>
93
-
94
-          <h3>Services</h3>
95
-          <p>The default services configured by DevStack are Identity (Keystone), Object Storage (Swift), Image Storage (Glance), Block Storage (Cinder), Compute (Nova), Network (Nova), Dashboard (Horizon), Orchestration (Heat)</p>
96
-          <p>Additional services not included directly in DevStack can be tied in to <code>stack.sh</code> using the <a href="plugins.html">plugin mechanism</a> to call scripts that perform the configuration and startup of the service.</p>
97
-
98
-          <h3>Node Configurations</h3>
99
-          <ul>
100
-            <li>single node</li>
101
-            <li>multi-node is not tested regularly by the core team, and even then only minimal configurations are reviewed</li>
102
-          </ul>
103
-
104
-          <h3>Exercises</h3>
105
-          <p>The DevStack exercise scripts are no longer used as integration and gate testing as that job has transitioned to Tempest.  They are still maintained as a demonstrations of using OpenStack from the command line and for quick operational testing.</p>
106
-
107
-        </div>        
108
-
109
-      </section>
110
-
111
-      <footer>
112
-        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
113
-      </footer>
114
-
115
-    </div> <!-- /container -->
116
-  </body>
117
-</html>
118 1
deleted file mode 100644
... ...
@@ -1,142 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>DevStack - Plugins</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-    
22
-    <!-- Le javascripts -->
23
-    <script src="assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="overview.html">Overview</a></li>
35
-            <li><a href="changes.html">Changes</a></li>
36
-            <li><a href="faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container" id="home">
45
-      
46
-      <section id="faq" class="span12">
47
-
48
-        <div class='row pull-left'>
49
-          <h2>Plugins <small>Add stuff</small></h2>
50
-          <p>DevStack has a couple of plugin mechanisms to allow easily adding support for additional projects and features.</p>
51
-
52
-          <h3>Extras.d Hooks</h3>
53
-          <p>These relatively new hooks are an extension of the existing calls from <code>stack.sh</code> at the end of its run, plus <code>unstack.sh</code> and <code>clean.sh</code>.  A number of the higher-layer projects are implemented in DevStack using this mechanism.</p>
54
-
55
-          <p>The script in <code>extras.d</code> is expected to be mostly a dispatcher to functions in a <code>lib/*</code> script.  The scripts are named with a zero-padded two digits sequence number prefix to control the order that the scripts are called, and with a suffix of <code>.sh</code>.  DevSack reserves for itself the sequence numbers 00 through 09 and 90 through 99.</p>
56
-
57
-          <p>Below is a template that shows handlers for the possible command-line arguments:</p>
58
-
59
-<pre>
60
-# template.sh - DevStack extras.d dispatch script template
61
-
62
-# check for service enabled
63
-if is_service_enabled template; then
64
-
65
-    if [[ "$1" == "source" ]]; then
66
-        # Initial source of lib script
67
-        source $TOP_DIR/lib/template
68
-    fi
69
-
70
-    if [[ "$1" == "stack" && "$2" == "pre-install" ]]; then
71
-        # Set up system services
72
-        echo_summary "Configuring system services Template"
73
-        install_package cowsay
74
-
75
-    elif [[ "$1" == "stack" && "$2" == "install" ]]; then
76
-        # Perform installation of service source
77
-        echo_summary "Installing Template"
78
-        install_template
79
-
80
-    elif [[ "$1" == "stack" && "$2" == "post-config" ]]; then
81
-        # Configure after the other layer 1 and 2 services have been configured
82
-        echo_summary "Configuring Template"
83
-        configure_template
84
-
85
-    elif [[ "$1" == "stack" && "$2" == "extra" ]]; then
86
-        # Initialize and start the template service
87
-        echo_summary "Initializing Template"
88
-        ##init_template
89
-    fi
90
-
91
-    if [[ "$1" == "unstack" ]]; then
92
-        # Shut down template services
93
-        # no-op
94
-        :
95
-    fi
96
-
97
-    if [[ "$1" == "clean" ]]; then
98
-        # Remove state and transient data
99
-        # Remember clean.sh first calls unstack.sh
100
-        # no-op
101
-        :
102
-    fi
103
-fi
104
-</pre>
105
-
106
-          <p>The arguments are:
107
-          <ul>
108
-            <li><strong>source</strong> - Called by each script that utilizes <code>extras.d</code> hooks; this replaces directly sourcing the <code>lib/*</code> script.</li>
109
-            <li><strong>stack</strong> - Called by <code>stack.sh</code> three times for different phases of its run:
110
-              <ul>
111
-                <li><strong>pre-install</strong> - Called after system (OS) setup is complete and before project source is installed.</li>
112
-                <li><strong>install</strong> - Called after the layer 1 and 2 projects source and their dependencies have been installed.</li>
113
-                <li><strong>post-config</strong> - Called after the layer 1 and 2 services have been configured.  All configuration files for enabled services should exist at this point.</li>
114
-                <li><strong>extra</strong> - Called near the end after layer 1 and 2 services have been started.  This is the existing hook and has not otherwise changed.</li>
115
-              </ul></li>
116
-            <li><strong>unstack</strong> - Called by <code>unstack.sh</code> before other services are shut down.</li>
117
-            <li><strong>clean</strong> - Called by <code>clean.sh</code> before other services are cleaned, but after <code>unstack.sh</code> has been called.
118
-          </ul></p>
119
-
120
-
121
-          <h3>Hypervisor</h3>
122
-          <p>Hypervisor plugins are fairly new and condense most hypervisor configuration into one place.</p>
123
-
124
-          <p>The initial plugin implemented was for Docker support and is a useful template for the required support.  Plugins are placed in <code>lib/nova_plugins</code> and named <code>hypervisor-&lt;name&gt;</code> where <code>&lt;name&gt;</code> is the value of <code>VIRT_DRIVER</code>.  Plugins must define the following functions:</p>
125
-            <ul>
126
-              <li><code>install_nova_hypervisor</code> - install any external requirements</li>
127
-              <li><code>configure_nova_hypervisor</code> - make configuration changes, including those to other services</li>
128
-              <li><code>start_nova_hypervisor</code> - start any external services</li>
129
-              <li><code>stop_nova_hypervisor</code> - stop any external services</li>
130
-              <li><code>cleanup_nova_hypervisor</code> - remove transient data and cache</li>
131
-            </ul>
132
-        </div>        
133
-
134
-      </section>
135
-
136
-      <footer>
137
-        <p>&copy; Openstack Foundation 2011-2013 &mdash; An <a href="https://wiki.openstack.org/wiki/Programs">OpenStack program</a> created by <a href="http://www.rackspace.com/cloud/private_edition/">Rackspace Cloud Builders</a></p>
138
-      </footer>
139
-
140
-    </div> <!-- /container -->
141
-  </body>
142
-</html>
143 1
deleted file mode 100644
... ...
@@ -1,101 +0,0 @@
1
-<!DOCTYPE html>
2
-<html lang="en">
3
-  <head>
4
-    <meta charset="utf-8">
5
-    <title>DevStack - stackrc</title>
6
-    <meta name="description" content="">
7
-    <meta name="author" content="">
8
-
9
-    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
10
-    <!--[if lt IE 9]>
11
-      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
12
-    <![endif]-->
13
-
14
-    <!-- Le styles -->
15
-    <link href="assets/css/bootstrap.css" rel="stylesheet">
16
-    <link href="assets/css/local.css" rel="stylesheet">
17
-    <style type="text/css">
18
-      body { padding-top: 60px; }
19
-      dd { padding: 10px; }
20
-    </style>
21
-    
22
-    <!-- Le javascripts -->
23
-    <script src="../assets/js/jquery-1.7.1.min.js" type="text/javascript" charset="utf-8"></script>
24
-    <script src="../assets/js/bootstrap.js" type="text/javascript" charset="utf-8"></script>
25
-  </head>
26
-
27
-  <body>
28
-
29
-    <div class="navbar navbar-fixed-top">
30
-      <div class="navbar-inner">
31
-        <div class="container">
32
-          <a class="brand" href="/">DevStack</a>
33
-          <ul class="nav pull-right">
34
-            <li><a href="overview.html">Overview</a></li>
35
-            <li><a href="changes.html">Changes</a></li>
36
-            <li><a href="faq.html">FAQ</a></li>
37
-            <li><a href="http://github.com/openstack-dev/devstack">GitHub</a></li>
38
-            <li><a href="https://review.openstack.org/#/q/status:open+project:openstack-dev/devstack,n,z">Gerrit</a></li>
39
-          </ul>
40
-        </div>
41
-      </div>
42
-    </div>
43
-
44
-    <div class="container">
45
-
46
-      <section class="span12">
47
-        <div class="page-header">
48
-          <h2>stackrc <small>DevStack settings</small></h2>
49
-          <p><code>stackrc</code> is the primary configuration file for DevStack.
50
-          It contains all of the settings that control the services started
51
-          and the repositories used to download the source for those services.
52
-          <code>stackrc</code> sources the <code>localrc</code> section of
53
-          <code>local.conf</code> to perform the default overrides.</p>
54
-        </div>
55
-        <dl>
56
-
57
-          <dt>DATABASE_TYPE</dt>
58
-          <dd>Select the database backend to use.  The default is <code>mysql</code>,
59
-          <code>postgresql</code> is also available.</dd>
60
-
61
-          <dt>ENABLED_SERVICES</dt>
62
-          <dd>Specify which services to launch.  These generally correspond to
63
-            screen tabs. 
64
-            The default includes: Glance (API and Registry), Keystone, Nova (API,
65
-            Certificate, Object Store, Compute, Network, Scheduler, VNC proxies,
66
-            Certificate Authentication), Cinder (Scheduler, API, Volume), Horizon, MySQL, RabbitMQ, Tempest.
67
-            <pre>ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,cinder,c-sch,c-api,c-vol,n-sch,n-novnc,n-xvnc,n-cauth,horizon,rabbit,tempest,$DATABASE_TYPE</pre>
68
-            Other services that are not enabled by default can be enabled in
69
-            <code>localrc</code>. For example, to add Swift, use the following service names:
70
-            <pre>enable_service s-proxy s-object s-container s-account</pre>
71
-            A service can similarly be disabled:
72
-            <pre>disable_service horizon</pre></dd>
73
-
74
-          <dt>Service Repos</dt>
75
-          <dd>The Git repositories used to check out the source for each service
76
-            are controlled by a pair of variables set for each service.  
77
-            <code>*_REPO</code> points to the repository and <code>*_BRANCH</code>
78
-            selects which branch to check out.  These may be overridden in
79
-            <code>local.conf</code> to pull source from a different repo for testing,
80
-            such as a Gerrit branch proposal.  <code>GIT_BASE</code> points to the primary repository server.
81
-            <pre>NOVA_REPO=$GIT_BASE/openstack/nova.git
82
-NOVA_BRANCH=master</pre>
83
-            To pull a branch directly from Gerrit, get the repo and branch from the 
84
-            Gerrit review page:
85
-            <pre>git fetch https://review.openstack.org/p/openstack/nova refs/changes/50/5050/1 && git checkout FETCH_HEAD</pre>
86
-            The repo is the stanza following <code>fetch</code> and the branch
87
-            is the stanza following that:
88
-            <pre>NOVA_REPO=https://review.openstack.org/p/openstack/nova
89
-NOVA_BRANCH=refs/changes/50/5050/1</pre></dd>
90
-
91
-        </dl>
92
-      </section
93
-
94
-      <footer>
95
-        <p>&copy; Openstack Foundation 2011-2014 &mdash; An <a href="https://www.openstack.org/">OpenStack</a> <a href="https://wiki.openstack.org/wiki/Programs">program</a></p>
96
-      </footer>
97
-
98
-    </div> <!-- /container -->
99
-
100
-  </body>
101
-</html>
... ...
@@ -4,7 +4,7 @@
4 4
 #
5 5
 # - Install shocco if not found on PATH and INSTALL_SHOCCO is set
6 6
 # - Clone MASTER_REPO branch MASTER_BRANCH
7
-# - Re-creates ``docs/html`` directory from existing repo + new generated script docs
7
+# - Re-creates ``doc/build/html`` directory from existing repo + new generated script docs
8 8
 
9 9
 # Usage:
10 10
 ## build_docs.sh [-o <out-dir>] [-g] [master|<repo> [<branch>]]
... ...
@@ -29,8 +29,8 @@ MASTER_BRANCH=${MASTER_BRANCH:-master}
29 29
 # http://devstack.org is a GitHub gh-pages site in the https://github.com/cloudbuilders/devtack.git repo
30 30
 GH_PAGES_REPO=git@github.com:cloudbuilders/devstack.git
31 31
 
32
-DOCS_SOURCE=docs/source
33
-HTML_BUILD=docs/html
32
+DOCS_SOURCE=doc/source
33
+HTML_BUILD=doc/build/html
34 34
 
35 35
 # Keep track of the devstack directory
36 36
 TOP_DIR=$(cd $(dirname "$0")/.. && pwd)
... ...
@@ -136,7 +136,7 @@ for f in $(find functions functions-common lib samples -type f -name \*); do
136 136
     mkdir -p $FQ_HTML_BUILD/`dirname $f`;
137 137
     $SHOCCO $f > $FQ_HTML_BUILD/$f.html
138 138
 done
139
-echo "$FILES" >docs/files
139
+echo "$FILES" >doc/files
140 140
 
141 141
 if [[ -n $GH_UPDATE ]]; then
142 142
     GH_ROOT=$(mktemp -d work-gh-XXXX)