sqlui 0.1.67 → 0.1.69

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7b91f535db1da5166bfebd7b9d9097db156b429aa283c6084e1f79bb348f56c4
4
- data.tar.gz: bec7b344b15ee7730f88e77ad88910a8e316ac135aa9f66a4ea96aafecf763ac
3
+ metadata.gz: ee20f44f7eec60439ca07c207698d2cc4a0ed19622cd10073185f1bdab4669e6
4
+ data.tar.gz: 27a30d2475849a4ec78786fb6ed449245fa5e36fbb9f0baaefcdfb54cb98318d
5
5
  SHA512:
6
- metadata.gz: e470fbc8f9ea18c9de08eb05ce67a491f6a0b42a9e0895033566f97953da3e630963f431192411af6471dc678979e45e67aa845fbde3b07093abc4c95c119e3d
7
- data.tar.gz: bd4030d8b1e3095873b887c36dad1303b63aa1e020851ce5fa3336b8b5f055b6b33b20b21db28a203350c3cc7746cd1dc422a221a08412903a39b8d0f6a79afa
6
+ metadata.gz: f5f53930cfe0ff9539908c47e78b9437ac39d971d4fcaf03e4090a64b7f5a0e25a31d5e7abdb4bbdc216c7703ecd1bbf757c5a4cc15ff3e2f4977879c33d1826
7
+ data.tar.gz: d2f8b1df886420a358d1763f7c0c44cedf0eb9cfccab1b54915f505b29e206d4792dfe743a6c8b1e4479a940990ac7112235620dfa68fe0ee5fc83cd50342c76
data/.release-version CHANGED
@@ -1 +1 @@
1
- 0.1.67
1
+ 0.1.69
data/app/server.rb CHANGED
@@ -255,7 +255,7 @@ class Server < Sinatra::Base
255
255
  end
256
256
  end
257
257
 
258
- get(/#{Regexp.escape("#{config.base_url_path}/#{database.url_path}/")}(query|graph|structure|saved)/) do
258
+ get(/#{Regexp.escape("#{config.base_url_path}/#{database.url_path}/")}(query|graph|saved|structure|help)/) do
259
259
  status 200
260
260
  headers 'Cache-Control' => 'no-cache'
261
261
  client_config = config.airbrake[:client] || {}
data/app/views/sqlui.erb CHANGED
@@ -22,6 +22,7 @@
22
22
  <script type="text/javascript" src="<%= resource_path_map['sqlui.js'] %>"></script>
23
23
  <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>
24
24
  <link rel="stylesheet" href="<%= resource_path_map['sqlui.css'] %>">
25
+ <link rel="stylesheet" href="<%= resource_path_map['help.css'] %>">
25
26
  </head>
26
27
 
27
28
  <body>
@@ -30,12 +31,13 @@
30
31
 
31
32
  <div id="main-box" style="display:none">
32
33
  <div id="tabs-box">
33
- <h1 id="header"><a id="header-link">SQLUI</a></h1>
34
+ <h1 id="header"><a id="header-link">SQLUI<span class="keyboard-shortcut-indicator">[0]</span></a></h1>
34
35
  <h1 id="server-name"></h1>
35
- <a id="query-tab-button" class="tab-button">Query</a>
36
- <a id="graph-tab-button" class="tab-button">Graph</a>
37
- <a id="saved-tab-button" class="tab-button">Saved</a>
38
- <a id="structure-tab-button" class="tab-button">Structure</a>
36
+ <a id="query-tab-button" class="tab-button">Query<span class="keyboard-shortcut-indicator">[1]</span></a>
37
+ <a id="graph-tab-button" class="tab-button">Graph<span class="keyboard-shortcut-indicator">[2]</span></a>
38
+ <a id="saved-tab-button" class="tab-button">Saved<span class="keyboard-shortcut-indicator">[3]</span></a>
39
+ <a id="structure-tab-button" class="tab-button">Structure<span class="keyboard-shortcut-indicator">[4]</span></a>
40
+ <a id="help-tab-button" class="tab-button">Help<span class="keyboard-shortcut-indicator">[5]</span></a>
39
41
  </div>
40
42
 
41
43
  <div id="query-box" class="tab-content-element graph-element query-element" style="display: none;">
@@ -79,16 +81,16 @@
79
81
  <p id="result-time" class="result-time"></p>
80
82
  </div>
81
83
 
82
- <div id="saved-box" class="tab-content-element saved-element" style="display: none;">
84
+ <div id="saved-box" class="tab-content-element saved-element" style="display: none;" tabindex="0">
83
85
  </div>
84
86
 
85
87
  <div id="structure-box" class="tab-content-element structure-element" style="display: none;">
86
88
  <div class="structure-wrapper">
87
89
  <div id="schemas-tables-and-stats">
88
90
  <div id="schemas-and-tables">
89
- <select id="schemas" size="4">
91
+ <select id="schemas" size="4" tabindex="0">
90
92
  </select>
91
- <select id="tables" size="4">
93
+ <select id="tables" size="4" tabindex="0">
92
94
  </select>
93
95
  </div>
94
96
  <div id="stats">
@@ -103,6 +105,130 @@
103
105
  </div>
104
106
  </div>
105
107
 
108
+ <div id="help-box" class="tab-content-element" style="display: none;" tabindex="0">
109
+ <h2>Keyboard Shortcuts</h2>
110
+ <table id="keyboard-shortcuts">
111
+ <tbody>
112
+ <tr class="keyboard-shortcut-section"><td colspan="3">App Shortcuts</td></tr>
113
+ <tr class="keyboard-shortcut-header"><td> Mac</td><td>Windows</td><td>Action</td></tr>
114
+ <tr><td>Ctrl+0</td><td></td><td>Show databases</td></tr>
115
+ <tr><td>Ctrl+1</td><td></td><td>Select query tab</td></tr>
116
+ <tr><td>Ctrl+2</td><td></td><td>Select graph tab</td></tr>
117
+ <tr><td>Ctrl+3</td><td></td><td>Select saved tab</td></tr>
118
+ <tr><td>Ctrl+4</td><td></td><td>Select structure tab</td></tr>
119
+ <tr><td>Ctrl+5</td><td></td><td>Select help tab</td></tr>
120
+
121
+ <tr class="keyboard-shortcut-section"><td colspan="3">Result Table Shortcuts</td></tr>
122
+ <tr class="keyboard-shortcut-header"><td> Mac</td><td>Windows</td><td>Action</td></tr>
123
+ <tr><td>Option+click</td><td>Alt+Click</td><td>Copy clicked cell contents to clipboard</td></tr>
124
+ <tr><td>Cmd+click</td><td>Ctrl+Click</td><td>Open clicked cell contents in popup</td></tr>
125
+ <tr><td>Escape</td><td>Escape</td><td>Focus editor, Close popup</td></tr>
126
+
127
+ <tr class="keyboard-shortcut-section"><td colspan="3">Editor Submit Shortcuts</td></tr>
128
+ <tr class="keyboard-shortcut-header"><td> Mac</td><td>Windows</td><td>Action</td></tr>
129
+ <tr><td>Cmd+Enter</td><td>Ctrl+Enter</td><td>Execute query at cursor / selection</td></tr>
130
+ <tr><td>Cmd+Shift+Enter</td><td>Ctrl+Shift+Enter</td><td>Execute entire editor</td></tr>
131
+
132
+ <tr class="keyboard-shortcut-section"><td colspan="3">Editor Standard Shortcuts</td></tr>
133
+ <tr class="keyboard-shortcut-header"><td> Mac</td><td>Windows</td><td>Action</td></tr>
134
+ <tr><td>ArrowLeft</td><td>ArrowLeft</td><td>Move cursor left one character (Shift to select)</td></tr>
135
+ <tr><td>ArrowRight</td><td>ArrowRight</td><td>Move cursor right one character (Shift to select)</td></tr>
136
+ <tr><td>Option+ArrowLeft</td><td>Ctrl+ArrowLeft</td><td>Move cursor one group left (Shift to select)</td></tr>
137
+ <tr><td>Option+ArrowRight</td><td>Ctrl+ArrowRight</td><td>Move cursor one group right (Shift to select)</td></tr>
138
+ <tr><td>Cmd+ArrowLeft</td><td></td><td>Move cursor to start of line (Shift to select)</td></tr>
139
+ <tr><td>Cmd+ArrowRight</td><td></td><td>Move cursor to end of line (Shift to select)</td></tr>
140
+ <tr><td>ArrowUp</td><td>ArrowUp</td><td>Move cursor up one line (Shift to select)</td></tr>
141
+ <tr><td>ArrowDown</td><td>ArrowDown</td><td>Move cursor down one line (Shift to select)</td></tr>
142
+ <tr><td>Cmd+ArrowUp</td><td></td><td>Move cursor to start of document (Shift to select)</td></tr>
143
+ <tr><td>Cmd+ArrowDown</td><td></td><td>Move cursor to end of document (Shift to select)</td></tr>
144
+ <tr><td>Cmd+End</td><td>Ctrl+End</td><td>Move cursor to start of document (Shift to select)</td></tr>
145
+ <tr><td>Cmd+Home</td><td>Ctrl+Home</td><td>Move cursor to end of document (Shift to select)</td></tr>
146
+ <tr><td>PageUp</td><td>PageUp</td><td>Move cursor one page up (Shift to select)</td></tr>
147
+ <tr><td>PageDown</td><td>PageDown</td><td>Move cursor one page down (Shift to select)</td></tr>
148
+ <tr><td>Home</td><td>Home</td><td>Move cursor to previous line boundary (Shift to select)</td></tr>
149
+ <tr><td>End</td><td>End</td><td>Move cursor to next line boundary (Shift to select)</td></tr>
150
+ <tr><td>Enter</td><td>Enter</td><td>Insert new line and indent</td></tr>
151
+ <tr><td>Cmd+a</td><td>Ctrl+a</td><td>Select all</td></tr>
152
+ <tr><td>Backspace</td><td>Backspace</td><td>Delete previous character</td></tr>
153
+ <tr><td>Delete</td><td>Delete</td><td>Delete next character</td></tr>
154
+ <tr><td>Option+Backspace</td><td>Ctrl+Backspace</td><td>Delete previous group</td></tr>
155
+ <tr><td>Option+Delete</td><td>Ctrl+Delete</td><td>Delete next group</td></tr>
156
+ <tr><td>Cmd+Backspace</td><td></td><td>Delete to start of line</td></tr>
157
+ <tr><td>Cmd+Delete</td><td></td><td>Delete to end of line</td></tr>
158
+
159
+ <tr class="keyboard-shortcut-section"><td colspan="3">Editor Default Shortcuts</td></tr>
160
+ <tr class="keyboard-shortcut-header"><td> Mac</td><td>Windows</td><td>Action</td></tr>
161
+ <tr><td>Ctrl+ArrowLeft</td><td>Alt+ArrowLeft</td><td>Move cursor one element left (Shift to select)</td></tr>
162
+ <tr><td>Ctrl+ArrowRight</td><td>Alt+ArrowRight</td><td>Move cursor one element right (Shift to select)</td></tr>
163
+ <tr><td>Option+ArrowUp</td><td>Alt+ArrowUp</td><td>Move line up</td></tr>
164
+ <tr><td>Option+ArrowDown</td><td>Alt+ArrowDown</td><td>Move line down</td></tr>
165
+ <tr><td>Shift+Option+ArrowUp</td><td>Shift+Alt+ArrowUp</td><td>Copy line up</td></tr>
166
+ <tr><td>Shift+Option+ArrowDown</td><td>Shift+Alt+ArrowDown</td><td>Copy line down</td></tr>
167
+ <tr><td>Escape</td><td>Escape</td><td>Simplify selection</td></tr>
168
+ <tr><td>Shift+Enter</td><td>Shift+Enter</td><td>Insert blank line</td></tr>
169
+ <tr><td>Ctrl+l</td><td>Alt+l</td><td>Select line</td></tr>
170
+ <tr><td>Cmd+i</td><td>Ctrl+i</td><td>Expand current selection</td></tr>
171
+ <tr><td>Cmd+[</td><td>Ctrl+[</td><td>Decrease indent</td></tr>
172
+ <tr><td>Cmd+]</td><td>Ctrl+]</td><td>Increase indent</td></tr>
173
+ <tr><td>Cmd+Option+\</td><td>Ctrl+Alt+\</td><td>Indent selection</td></tr>
174
+ <tr><td>Shift+Cmd+k</td><td>Shift+Ctrl+k</td><td>Delete line</td></tr>
175
+ <tr><td>Shift+Cmd+\</td><td>Shift+Ctrl+\</td><td>cursorMatchingBracket</td></tr>
176
+ <tr><td>Cmd+/</td><td>Ctrl+/</td><td>Toggle comment</td></tr>
177
+ <tr><td>Shift+Option+a</td><td>Shift+Alt+a</td><td>Toggle comment</td></tr>
178
+
179
+ <tr class="keyboard-shortcut-section"><td colspan="3">Editor Completion Shortcuts</td></tr>
180
+ <tr class="keyboard-shortcut-header"><td> Mac</td><td>Windows</td><td>Action</td></tr>
181
+ <tr><td>Ctrl+Space</td><td>Ctrl+Space</td><td>Start completion</td></tr>
182
+ <tr><td>Escape</td><td>Escape</td><td>Close completion</td></tr>
183
+ <tr><td>ArrowUp</td><td>ArrowUp</td><td>Move selection up</td></tr>
184
+ <tr><td>ArrowDown</td><td>ArrowDown</td><td>Move selection down</td></tr>
185
+ <tr><td>PageUp</td><td>PageUp</td><td>Move selection page up</td></tr>
186
+ <tr><td>PageDown</td><td>PageDown</td><td>Move selection page down</td></tr>
187
+ <tr><td>Enter</td><td>Enter</td><td>Accept completion</td></tr>
188
+
189
+ <tr class="keyboard-shortcut-section"><td colspan="3">Editor Fold Shortcuts</td></tr>
190
+ <tr class="keyboard-shortcut-header"><td> Mac</td><td>Windows</td><td>Action</td></tr>
191
+ <tr><td>Cmd+Option+[</td><td>Ctrl+Shift+[</td><td>Fold code at cursor</td></tr>
192
+ <tr><td>Cmd+Option+]</td><td>Ctrl+Shift+]</td><td>Unfold code at cursor</td></tr>
193
+ <tr><td>Ctrl+Option+[</td><td>Ctrl+Alt+[</td><td>Fold all</td></tr>
194
+ <tr><td>Ctrl+Option+[</td><td>Ctrl+Alt+[</td><td>Unfold all</td></tr>
195
+
196
+ <tr class="keyboard-shortcut-section"><td colspan="3">Editor History Shortcuts</td></tr>
197
+ <tr class="keyboard-shortcut-header"><td> Mac</td><td>Windows</td><td>Action</td></tr>
198
+ <tr><td>Cmd+z</td><td>Ctrl+z</td><td>Undo</td></tr>
199
+ <tr><td>Cmd+y</td><td>Ctrl+y</td><td>Redo</td></tr>
200
+ <tr><td>Cmd+u</td><td>Ctrl+u</td><td>Undo selection</td></tr>
201
+ <tr><td>Cmd+Shift+u</td><td>Alt+u</td><td>Redo selection</td></tr>
202
+
203
+ <tr class="keyboard-shortcut-section"><td colspan="3">Editor Search Shortcuts</td></tr>
204
+ <tr class="keyboard-shortcut-header"><td> Mac</td><td>Windows</td><td>Action</td></tr>
205
+ <tr><td>Cmd+f</td><td>Ctrl+f</td><td>Open search panel</td></tr>
206
+ <tr><td>Escape</td><td>Escape</td><td>Close search panel</td></tr>
207
+ <tr><td>Cmd+g, F3</td><td>Ctrl+g, F3</td><td>Find next</td></tr>
208
+ <tr><td>Shift+Cmd+g, Shift+F3</td><td>Shift+Ctrl+g, Shift+F3</td><td>Find previous</td></tr>
209
+ <tr><td>Option+g</td><td>Alt+g</td><td>Go to line</td></tr>
210
+ <tr><td>Cmd+d</td><td>Ctrl+d</td><td>Select next occurrence</td></tr>
211
+
212
+ <tr class="keyboard-shortcut-section"><td colspan="3">Emacs-Style Shortcuts (Mac Only)</td></tr>
213
+ <tr class="keyboard-shortcut-header"><td> Mac</td><td>Windows</td><td>Action</td></tr>
214
+ <tr><td>Ctrl+b</td><td></td><td>Move cursor left one character (Shift to select)</td></tr>
215
+ <tr><td>Ctrl+f</td><td></td><td>Move cursor right one character (Shift to select)</td></tr>
216
+ <tr><td>Ctrl+p</td><td></td><td>Move cursor up one line (Shift to select)</td></tr>
217
+ <tr><td>Ctrl+n</td><td></td><td>Move cursor down one line (Shift to select)</td></tr>
218
+ <tr><td>Ctrl+a</td><td></td><td>Move cursor to start of line (Shift to select)</td></tr>
219
+ <tr><td>Ctrl+e</td><td></td><td>Move cursor to end of line (Shift to select)</td></tr>
220
+ <tr><td>Ctrl+h</td><td></td><td>Delete previous character</td></tr>
221
+ <tr><td>Ctrl+d</td><td></td><td>Delete next character</td></tr>
222
+ <tr><td>Ctrl+k</td><td></td><td>Delete to end of line</td></tr>
223
+ <tr><td>Ctrl+Alt+h</td><td></td><td>Delete previous group</td></tr>
224
+ <tr><td>Ctrl+o</td><td></td><td>Split line</td></tr>
225
+ <tr><td>Ctrl+t</td><td></td><td>Flip characters before and after cursor</td></tr>
226
+ <tr><td>Alt+v</td><td></td><td>Move cursor one page up</td></tr>
227
+ <tr><td>Ctrl+v</td><td></td><td>Move cursor one page down</td></tr>
228
+ </tbody>
229
+ </table>
230
+ </div>
231
+
106
232
  <div id="status-box">
107
233
  <div id="status-message"></div>
108
234
  <div style="flex: 1;"></div>
@@ -0,0 +1,38 @@
1
+ #help-box {
2
+ font-family: Helvetica, sans-serif;
3
+ padding: 10px 10px 0 10px;
4
+ flex: 1;
5
+ overflow: auto;
6
+ outline: none;
7
+ }
8
+
9
+ #help-box h2 {
10
+ font-size: 22px;
11
+ margin: 10px 0 20px 0;
12
+ }
13
+ #help-box table#keyboard-shortcuts {
14
+ border-collapse: collapse;
15
+ }
16
+
17
+ #help-box table#keyboard-shortcuts tr.keyboard-shortcut-header {
18
+ font-weight: bold;
19
+ background: #efefef;
20
+ }
21
+
22
+ #help-box table#keyboard-shortcuts td, #help-box table#keyboard-shortcuts tr.keyboard-shortcut-header {
23
+ text-align: left;
24
+ border: 1px solid #ddd;
25
+ padding: 10px;
26
+ font-size: 14px;
27
+ }
28
+
29
+ #help-box table#keyboard-shortcuts .keyboard-shortcut-section td {
30
+ border: none;
31
+ font-weight: bold;
32
+ padding: 20px 5px 5px 0;
33
+ font-size: 16px;
34
+ }
35
+
36
+ #help-box table#keyboard-shortcuts tr.keyboard-shortcut-section:first-child td {
37
+ padding-top: 0;
38
+ }
@@ -49,9 +49,15 @@ body {
49
49
  color: #333
50
50
  }
51
51
 
52
+ #header-link {
53
+ display: flex;
54
+ flex-direction: row;
55
+ align-items: center;
56
+ }
57
+
52
58
  #server-name {
53
59
  flex: 1;
54
- padding-left: 15px;
60
+ padding-left: 5px;
55
61
  font-weight: normal;
56
62
  overflow: hidden;
57
63
  white-space: nowrap;
@@ -78,6 +84,8 @@ body {
78
84
  background-color: #fff;
79
85
  font-size: 18px;
80
86
  align-self: center;
87
+ flex-direction: row;
88
+ align-items: center;
81
89
  }
82
90
 
83
91
  .tab-button {
@@ -93,6 +101,12 @@ body {
93
101
  font-weight: bold;
94
102
  }
95
103
 
104
+ .keyboard-shortcut-indicator {
105
+ font-size: 14px;
106
+ visibility: hidden;
107
+ margin: 0 5px;
108
+ }
109
+
96
110
  #query-box {
97
111
  display: flex;
98
112
  flex-direction: column;
@@ -242,18 +256,18 @@ body {
242
256
  text-overflow: ellipsis;
243
257
  }
244
258
 
245
- #result-box, #fetch-sql-box, #saved-box, #graph-box, #structure-box {
259
+ #result-box, #fetch-sql-box, #graph-box, #saved-box, #structure-box {
246
260
  flex: 1;
247
261
  overflow: auto;
248
262
  display: flex;
249
263
  flex-direction: column;
250
264
  }
251
265
 
252
- table tbody tr td {
266
+ .resize-table tbody tr td {
253
267
  height: 21px;
254
268
  }
255
269
 
256
- #result-table tbody tr td abbr a {
270
+ .resize-table tbody tr td abbr a {
257
271
  color: #555;
258
272
  cursor: pointer;
259
273
  text-decoration: none;
@@ -265,7 +279,7 @@ table tbody tr td {
265
279
  user-select: none;
266
280
  }
267
281
 
268
- #result-table tbody tr td abbr {
282
+ .resize-table tbody tr td abbr {
269
283
  margin: 0 5px 0 0;
270
284
  text-decoration: none;
271
285
  position: relative;
@@ -281,53 +295,50 @@ table tbody tr td {
281
295
  padding: 20px;
282
296
  }
283
297
 
284
- table {
298
+ .resize-table {
285
299
  font-family: monospace;
286
300
  border-spacing: 0;
287
301
  color: #333;
288
302
  font-size: 18px;
289
303
  }
290
304
 
291
- table td:last-child, table th:last-child {
305
+ .resize-table td:last-child, .resize-table th:last-child {
292
306
  border-right: none !important;
307
+ max-width: none;
293
308
  }
294
309
 
295
- td, th {
310
+ .resize-table td, .resize-table th {
296
311
  font-weight: normal;
297
312
  white-space: nowrap;
298
313
  max-width: 500px;
299
314
  }
300
315
 
301
- td:last-child, th:last-child {
302
- max-width: none;
303
- }
304
-
305
- td {
316
+ .resize-table td {
306
317
  overflow: hidden;
307
318
  text-overflow: ellipsis;
308
319
  padding: 5px 10px;
309
320
  text-align: right;
310
321
  }
311
322
 
312
- #result-table tbody tr td .cell-content-wrapper {
323
+ .resize-table tbody tr td .cell-content-wrapper {
313
324
  display: flex;
314
325
  }
315
326
 
316
- #result-table tbody tr td .cell-value {
327
+ .resize-table tbody tr td .cell-value {
317
328
  flex: 1;
318
329
  }
319
330
 
320
- th {
331
+ .resize-table th {
321
332
  font-weight: bold;
322
333
  border-bottom: 1px solid #ddd;
323
334
  border-right: 1px solid #ddd;
324
335
  }
325
336
 
326
- th div.col-content-wrapper {
337
+ .resize-table th div.col-content-wrapper {
327
338
  display: flex;
328
339
  }
329
340
 
330
- th div.col-name {
341
+ .resize-table th div.col-name {
331
342
  overflow: hidden;
332
343
  text-overflow: ellipsis;
333
344
  flex: 1;
@@ -336,14 +347,14 @@ th div.col-name {
336
347
  padding: 5px 10px;
337
348
  }
338
349
 
339
- th div.col-resizer {
350
+ .resize-table th div.col-resizer {
340
351
  width: 7px;
341
352
  position: relative;
342
353
  left: 5px; /* center over the right border */
343
354
  cursor: col-resize;
344
355
  }
345
356
 
346
- thead {
357
+ .resize-table thead {
347
358
  padding: 0;
348
359
  background-color: #fff;
349
360
  position: -webkit-sticky;
@@ -373,6 +384,7 @@ thead {
373
384
 
374
385
  #saved-box {
375
386
  font-family: Helvetica, sans-serif;
387
+ outline: none;
376
388
  }
377
389
 
378
390
  .links {
@@ -449,12 +461,12 @@ thead {
449
461
  color: #333;
450
462
  }
451
463
 
452
- table td:nth-child(1) {
464
+ #stats table td:nth-child(1) {
453
465
  text-align: left;
454
466
  font-family: Helvetica, sans-serif;
455
467
  }
456
468
 
457
- table td:nth-child(2) {
469
+ #stats table td:nth-child(2) {
458
470
  text-align: right;
459
471
  font-family: monospace;
460
472
  }