├── .gitmodules ├── .travis.yml ├── Dockerfile ├── LICENSE ├── README.md ├── config ├── console.sh ├── decode.blend ├── doc ├── introduction.md ├── sdk-01-overview.md ├── sdk-02-blends.md ├── sdk-03-technical.md ├── toaster-01-overview.md └── tordam-01-overview.md ├── docker-sdk ├── Dockerfile ├── README.md ├── docker-create.sh ├── docker-start.sh ├── docker-stop.sh ├── exposed-ports ├── keygen ├── run ├── supervisord.conf └── tor.pub.asc ├── docs └── views │ └── img │ ├── decodeos_logo-800px.jpg │ └── decodeos_logo.xcf ├── extra └── deb.torproject.org.asc └── rootfs-overlay ├── arm ├── .keep └── etc │ ├── cron.hourly │ └── decode-update │ └── part-expand.sh ├── common ├── .keep └── etc │ └── rc.local ├── live └── .keep └── vm └── .keep /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "vm-sdk"] 2 | path = vm-sdk 3 | url = https://github.com/parazyd/vm-sdk.git 4 | [submodule "arm-sdk"] 5 | path = arm-sdk 6 | url = https://github.com/parazyd/arm-sdk.git 7 | [submodule "live-sdk"] 8 | path = live-sdk 9 | url = https://github.com/parazyd/live-sdk.git 10 | [submodule "docs/webnomad"] 11 | path = docs/webnomad 12 | url = https://github.com/dyne/webnomad 13 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | notifications: 2 | email: false 3 | 4 | git: 5 | submodules: 6 | false 7 | 8 | env: 9 | - RELEASE_BRANCH="master" 10 | 11 | sudo: required 12 | 13 | language: ruby 14 | 15 | services: 16 | - docker 17 | 18 | before_install: 19 | - docker build -t dyne/decodeos:travis docker-sdk 20 | 21 | script: 22 | - container=$(docker create dyne/decodeos:travis) 23 | - docker start $container 24 | - docker exec $container dam-client -gen 25 | - sleep 10 26 | - docker exec $container ps axf 27 | - docker stop $container 28 | - docker rm $container 29 | 30 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | from dyne/devuan:ascii 2 | maintainer parazyd "https://github.com/parazyd" 3 | 4 | run echo "deb-src http://deb.devuan.org/merged ascii main" > /etc/apt/sources.list 5 | run echo "deb http://deb.devuan.org/merged ascii main" >> /etc/apt/sources.list 6 | run apt-get -qq update 7 | run apt-get -yy install zsh cgpt parted xz-utils qemu qemu-utils python-markdown ruby-ronn --no-install-recommends 8 | copy . . 9 | run git submodule update --init --recursive --checkout 10 | 11 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Operating System for Private and Anonymous Computation Clusters 2 | 3 | [![software by Dyne.org](https://www.dyne.org/wp-content/uploads/2015/12/software_by_dyne.png)](http://www.dyne.org) 4 | 5 |
6 | 7 | The DECODE operating system is a brand new GNU+Linux distribution 8 | designed to run on servers, embedded computers and virtual machines to 9 | automatically connect micro-services to a private and anonymous 10 | peer-to-peer network cluster. 11 | 12 |
13 | 14 | DECODE OS logo 15 | 16 | | Features | Components | 17 | |--------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| 18 | | Wide compatibility with industry standards | GNU + Linux minimal base | 19 | | Anonimity and privacy by design | [Tor](https://torproject.org) hidden service family | 20 | | Very secure, restricted environment | [grsec](https://github.com/minipli/linux-unofficial_grsec/wiki) community fork | 21 | | Customisable to run different applications | [Devuan](https://devuan.org) GNU+Linux SDK | 22 | | Pluggable consensus algorithm | [Redis](https://redis.io) based consensus broker | 23 | | Read-only and authenticated system | [SquashFS](http://tldp.org/HOWTO/SquashFS-HOWTO/whatis.html) + [overlayfs](https://www.kernel.org/doc/Documentation/filesystems/overlayfs.txt) + [Btrfs](https://btrfs.wiki.kernel.org/index.php/Main_Page) | 24 | | Integrated updating mechanism | [Roundshot](https://github.com/DECODEproject/roundshot) initramfs | 25 | | Built-in Graphical dashboard | [Netdata](https://github.com/netdata/netdata) resource monitor | 26 | | Low power consumption, outdoor usage | Ports to embedded ARM boards | 27 | | Extensible platform support | Includes latest JDK, Golang, Python etc. | 28 | | Minimal resource consumption | Online with less than 64MB of RAM | 29 | 30 | ## For stable releases see files.dyne.org/decode 31 | 32 | ## For more information see the DECODE project 33 | 34 | In particular, the following publications: 35 | 36 | - Privacy Design Strategies for the DECODE Architecture 37 | - Decode OS first release 38 | - DECODE OS Software Development Kit (soon to be superseeded by the upcoming Devuan's Developer Manual) 39 | 40 | ## Usage instructions 41 | 42 | DECODE OS comes in a variety of flavors: 43 | 44 | - for ARM based boxes (embedded) 45 | - for virtual machines (cloud) 46 | - live desktop (boot from usb) 47 | 48 | Running systems provide a dashboard by connecting using a browser 49 | using HTTP on port 19999. 50 | 51 | The default username is `decode` with password `decode` 52 | 53 | The default `root` password is `toor`. 54 | 55 | ## Get in touch! 56 | 57 | Developers of the Dyne.org foundation are available to support 58 | customisations and adaptations of this operating system for particular 59 | purposes in line with the foundation's goals. 60 | 61 | You are welcome to contact us: 62 | 63 | - **#devuan-dev** on **freenode** IRC (public, logged IPs) 64 | - **#dyne** on irc.dyne.org (public and private, no IPs logged) 65 | - E-mail **info@dyne.org** 66 | 67 | This project is a work in progress proceeding along a clear roadmap 68 | agreed for the DECODE project. The DECODE OS **stable release is planned 69 | for 1st quarter 2019**. 70 | 71 | Horizon 2020 72 | 73 | This project is receiving funding from the **European Union’s Horizon 74 | 2020 research and innovation programme under grant agreement 75 | nr. 732546**. 76 | 77 | ## Build from source 78 | 79 | The following instructions illustrate how one can build DECODE OS from 80 | scratch, eventually adding software to it. This section is a work in 81 | progress. 82 | 83 | Building can be done from any GNU+Linux distribution, it entails 84 | bootstrapping a new Devuan base and then customising it via its SDK 85 | using a "blend", root access is needed in order to operate in `chroot` 86 | and in KVM accellerated `qemu`. 87 | 88 | More information on this process is provided by the "Devuan's 89 | Developers Manual", here is an outline on the steps to be taken. 90 | 91 | 92 | 93 | ### System requirements 94 | 95 | A GNU/Linux system is required in order to build DECODE OS. 96 | 97 | Here a list of package dependencies: 98 | ``` 99 | zsh sudo cgpt xz-utils qemu qemu-utils 100 | ``` 101 | 102 | To clone this repository: 103 | 104 | ``` 105 | git clone https://github.com/DECODEproject/os-build-system --recursive 106 | ``` 107 | 108 | To update the repository: 109 | 110 | ``` 111 | git pull origin master && git submodule update --init --recursive --checkout 112 | ``` 113 | 114 | 115 | ### Building for ARM targets 116 | 117 | A more detailed reference for the arm-sdk can be found here: https://git.devuan.org/sdk/arm-sdk 118 | 119 | ``` 120 | cd arm-sdk # (or vm-sdk or live-sdk depending from your target) 121 | zsh -f 122 | ./init.sh # and when this is done, execute the command in the bottom of the output 123 | source sdk 124 | load devuan raspi3 decode # (replace "raspi3" with your board name, from the list below) 125 | bootstrap_complete_base 126 | ``` 127 | 128 | Here is the list of the supported boxes: https://git.devuan.org/sdk/arm-sdk/blob/master/sdk 129 | 130 | 131 | ### Building for VM targets 132 | 133 | 134 | To enter the build console just run `./console.sh`. 135 | 136 | To build a vagrant virtual machine, run `build_vagrant_dist`. 137 | 138 | To build a live iso image, run `build_iso_dist`. 139 | 140 | To build an ARM installer image, run `build_image_dist`. 141 | 142 | Here below the sequences of build steps executed by each target: 143 | 144 | ```sh 145 | build_image_dist() { 146 | bootstrap_complete_base 147 | blend_preinst 148 | image_prepare_raw 149 | image_partition_raw_${parted_type} 150 | build_kernel_${arch} 151 | blend_postinst 152 | rsync_to_raw_image 153 | image_pack_dist 154 | } 155 | 156 | build_iso_dist() { 157 | bootstrap_complete_base 158 | blend_preinst 159 | iso_prepare_strap 160 | build_kernel_${arch} 161 | iso_setup_isolinux 162 | iso_write_isolinux_cfg 163 | blend_postinst 164 | fill_apt_cache 165 | iso_squash_strap 166 | iso_xorriso_build 167 | } 168 | 169 | build_vagrant_dist() { 170 | image_${imageformat}_as_strapdir 171 | bootstrap_complete_base 172 | vm_inject_overrides 173 | blend_preinst 174 | vm_setup_grub 175 | blend_postinst 176 | vm_umount_${imageformat} 177 | vm_vbox_setup 178 | vm_vagrant_package 179 | vm_pack_dist 180 | } 181 | ``` 182 | 183 | The `build_vagrant_dist` target is a helper that executes a sequence 184 | of steps, some of them common to other helpers (hence 185 | combinable). Here below the full list of build steps executed by 186 | `build_vagrant_dist` 187 | 188 | The `bootstrap_complete_base` step creates a base system tarball that 189 | can be reused by any target, it is found inside `*_sdk/tmp` for each 190 | sdk and to save time and computation it can be copied in place for 191 | each sdk if the base system doesn't differ. 192 | 193 | ## Acknowledgments 194 | 195 | DECODE OS is Copyright (c) 2017-2018 by the Dyne.org Foundation 196 | 197 | DECODE OS and its core components are designed, written and maintained 198 | by Denis Roio and Ivan J. 199 | 200 | Devuan is a registered trademark of the Dyne.org foundation. 201 | 202 | The Devuan SDK used to build the DECODE OS was originally conceived 203 | during a period of residency at the Schumacher college in Dartington, 204 | UK. Greatly inspired by the laborious and mindful atmosphere of its 205 | wonderful premises. 206 | 207 | Devuan SDK components are designed, written and maintained by Denis 208 | Roio, Enzo Nicosia and Ivan J. 209 | 210 | This source code is free software: you can redistribute it and/or modify it 211 | under the terms of the GNU General Public License as published by the Free 212 | Software Foundation, either version 3 of the License, or (at your option) 213 | any later version. 214 | 215 | This software is distributed in the hope that it will be useful, but 216 | WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 217 | or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 218 | more details. 219 | 220 | You should have received a copy of the GNU General Public License along 221 | with this source code. If not, see . 222 | -------------------------------------------------------------------------------- /config: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | 3 | blend_name="decode" 4 | blend_vers="1.0.0" 5 | image_name="${blend_name}-${blend_vers}-${arch}" 6 | vm_name="${blend_name}-${blend_vers}-${arch}" 7 | 8 | dyneci_url="https://sdk.dyne.org:4443/job" 9 | 10 | 11 | tomb_version="v2.4" 12 | tomb_url="https://github.com/dyne/tomb.git" 13 | 14 | musl_version="v.1.1.19" 15 | musl_url="git://git.musl-libc.org/musl" 16 | 17 | netdata_version="1.9.0" 18 | netdata_url="https://github.com/firehol/netdata/releases/download/v${netdata_version}/netdata-${netdata_version}.tar.gz" 19 | 20 | stem_version="1.6.0" 21 | stem_url="https://git.torproject.org/stem.git" 22 | 23 | tordam_url="github.com/decodeproject/tor-dam/..." 24 | 25 | zenroom_url="${dyneci_url}/zenroom-static-${arch}/lastSuccessfulBuild/artifact/src/zenroom-static" 26 | 27 | golang_url="${dyneci_url}/go-binaries/lastBuild/architecture=${arch}/artifact/go.${arch}.tar.gz" 28 | 29 | chainspace_url="https://github.com/chainspace/chainspace" 30 | chainspacedist_url="${dyneci_url}/chainspace-jar/lastSuccessfulBuild/artifact/chainspacedist.tgz" 31 | 32 | 33 | size="4098" 34 | filesystem="btrfs" 35 | 36 | TAR_STAGE4=true 37 | 38 | extra_packages+=( 39 | openrc 40 | eudev 41 | zsh 42 | tmux 43 | curl 44 | cryptsetup 45 | openssh-server 46 | psmisc 47 | btrfs-progs 48 | openssh-client 49 | gnupg2 50 | dirmngr 51 | pcsc-tools 52 | tor 53 | redis-tools 54 | redis-server 55 | paxctl 56 | net-tools 57 | 58 | default-jre-headless 59 | 60 | apt-transport-tor 61 | apt-transport-https 62 | deb.torproject.org-keyring 63 | 64 | python2.7 65 | python3 66 | 67 | # minimalism 68 | busybox-static 69 | 70 | # utilities 71 | mlocate 72 | gettext 73 | miscfiles 74 | tree 75 | 76 | # troubleshooting 77 | lsof 78 | htop 79 | iftop 80 | iotop 81 | strace 82 | 83 | python-pip 84 | python3-pip 85 | libpython-dev 86 | libffi-dev 87 | python-tox 88 | python-cffi 89 | python-pytest 90 | python-pytest-cov 91 | python-msgpack 92 | python-numpy 93 | python3-numpy 94 | python-requests 95 | python3-requests 96 | sqlite 97 | sqlite3 98 | libssl1.0-dev 99 | 100 | 101 | # build tools 102 | build-essential 103 | cmake 104 | pkg-config 105 | zlib1g-dev 106 | uuid-dev 107 | autoconf 108 | automake 109 | libtool 110 | gcc-6-plugin-dev 111 | libncurses5-dev 112 | flex 113 | libbison-dev 114 | libtool-bin 115 | libtool 116 | libgcrypt20 117 | libgcrypt20-dev 118 | equivs 119 | ) 120 | 121 | purge_packages=( 122 | dbus 123 | elogind 124 | gnome-icon-theme 125 | sysv-rc 126 | ) 127 | 128 | finalize_purge_packages=( 129 | #autoconf 130 | #automake 131 | #flex 132 | #equivs 133 | ) 134 | -------------------------------------------------------------------------------- /console.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if ! [ -r vm-sdk ]; then git submodule update --init --recursive; fi 4 | 5 | sdk="${1:-vm-sdk}" 6 | 7 | cat < $sdk/.zshrc 8 | # local zshrc for easy start of console 9 | # usage: ZDOTDIR=/path/to/vm-sdk zsh 10 | pushd \$ZDOTDIR > /dev/null 11 | 12 | source sdk 13 | load devuan decode 14 | popd > /dev/null 15 | EOF 16 | 17 | ZDOTDIR=$sdk zsh 18 | -------------------------------------------------------------------------------- /decode.blend: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env zsh 2 | # Copyright (c) 2017-2018 Dyne.org Foundation 3 | # 4 | # decode.blend is written and maintained by Ivan J. 5 | # 6 | # This source code is free software: you can redistribute it and/or modify 7 | # it under the terms of the GNU General Public License as published by 8 | # the Free Software Foundation, either version 3 of the License, or 9 | # (at your option) any later version. 10 | # 11 | # This software is distributed in the hope that it will be useful, 12 | # but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | # GNU General Public License for more details. 15 | # 16 | # You should have received a copy of the GNU General Public License 17 | # along with this source code. If not, see . 18 | 19 | ## libdevuansdk build script for decode-os 20 | 21 | source "$R/../config" 22 | 23 | blend_bootstrap_setup() { 24 | fn blend_bootstrap_setup "(override)" 25 | req=(strapdir) 26 | ckreq || return 1 27 | 28 | sudo cp -v "$R/../extra/deb.torproject.org.asc" "$strapdir" 29 | cat </dev/null 30 | #!/bin/sh 31 | echo " * Adding deb.torproject.org repo key to apt..." 32 | cat /deb.torproject.asc | apt-key add - 33 | rm -f /deb.torproject.asc 34 | EOF 35 | chroot-script -d blend-bootstrap-setup || zerr 36 | } 37 | 38 | blend_preinst() { 39 | fn blend_preinst 40 | req=(strapdir) 41 | ckreq || return 1 42 | 43 | notice "executing $blend_name preinst" 44 | 45 | add-user decode decode 46 | } 47 | 48 | blend_postinst() { 49 | fn blend_postinst 50 | req=(strapdir) 51 | ckreq || return 1 52 | 53 | notice "executing $blend_name postinst" 54 | 55 | nopackage=(musl tomb golang tordam stem netdata zenroom chainspace) 56 | for app in $nopackage; do 57 | blend_install_${app} || zerr 58 | done || zerr 59 | 60 | notice "copying rootfs overlays" 61 | rootfs_overlay_path="$R/../rootfs-overlay" 62 | sudo rsync -raX "${rootfs_overlay_path}/common/" "${strapdir}" 63 | if [[ -n "$vmsdk_version" ]]; then 64 | _sdk="vm" 65 | elif [[ -n "$armsdk_version" ]]; then 66 | _sdk="arm" 67 | elif [[ -n "$livesdk_version" ]]; then 68 | _sdk="live" 69 | fi 70 | sudo rsync -raX "${rootfs_overlay_path}/${_sdk}/" "${strapdir}" 71 | 72 | blend_finalize || zerr 73 | } 74 | 75 | ## {{{ blend_install_musl() 76 | blend_install_musl() { 77 | fn blend_install_musl 78 | req=(strapdir musl_version musl_url) 79 | ckreq || return 1 80 | 81 | notice "cloning musl gits" 82 | sudo git clone "$musl_url" "$strapdir/root/musl" || zerr 83 | 84 | notice "installing musl in $strapdir" 85 | 86 | cat </dev/null 87 | #!/bin/sh 88 | cd /root/musl 89 | git checkout ${musl_version} 90 | ./configure && \ 91 | make ${MAKEOPTS} && make install || exit 1 92 | cd .. 93 | rm -rf musl 94 | EOF 95 | chroot-script install-musl || zerr 96 | } 97 | ## }}} 98 | ## {{{ blend_install_tomb() 99 | blend_install_tomb() { 100 | fn blend_install_tomb 101 | req=(strapdir tomb_version tomb_url) 102 | ckreq || return 1 103 | 104 | notice "cloning tomb gits" 105 | sudo git clone "$tomb_url" "$strapdir/root/tomb" || zerr 106 | 107 | notice "installing tomb in $strapdir" 108 | cat </dev/null 109 | #!/bin/sh 110 | cd /root/tomb 111 | git checkout ${tomb_version} 112 | make install 113 | 114 | cd extras/kdf-keys 115 | make && make install || exit 1 116 | 117 | cd /root 118 | rm -rf tomb 119 | EOF 120 | chroot-script install-tomb || zerr 121 | } 122 | ## }}} 123 | ## {{{ blend_install_golang() 124 | blend_install_golang() { 125 | fn blend_install_golang 126 | req=(strapdir golang_url) 127 | ckreq || return 1 128 | 129 | notice "installing golang in $strapdir" 130 | cat </dev/null 131 | #!/bin/sh 132 | cd /usr/local 133 | wget ${golang_url} || exit 1 134 | tar xf $(basename ${golang_url}) 135 | rm -f $(basename ${golang_url}) 136 | 137 | ln -snvf /usr/local/go/bin/go /usr/local/bin/go 138 | ln -snvf /usr/local/go/bin/gofmt /usr/local/bin/gofmt 139 | EOF 140 | chroot-script install-golang || zerr 141 | } 142 | ## }}} 143 | ## {{{ blend_install_tordam() 144 | blend_install_tordam() { 145 | fn blend_install_tordam 146 | req=(strapdir tordam_url) 147 | ckreq || return 1 148 | 149 | notice "installing tor-dam in $strapdir" 150 | cat </dev/null 151 | #!/bin/sh 152 | cd /home/decode 153 | sudo -u decode go get -v -u ${tordam_url} 154 | cd /home/decode/go/src/github.com/decodeproject/tor-dam 155 | 156 | # A random password for the Tor Controlport auth 157 | torpass="\$(echo "\$(shuf -n 2 /usr/share/dict/words --random-source=/dev/urandom | tr '\n' '-')")" 158 | sed -i python/damhs.py -e "s/topkek/\${torpass}/" 159 | sed -i python/damauth.py -e "s/topkek/\${torpass}/" 160 | make install 161 | make -C contrib install-init 162 | 163 | torpass="\$(sudo -u debian-tor tor --hash-password "\${torpass}")" 164 | sed -e 's/User tor/User debian-tor/' < contrib/torrc > /etc/tor/torrc 165 | sed -e 's/HashedControlPassword .*//' -i /etc/tor/torrc 166 | echo "HashedControlPassword \${torpass}" >> /etc/tor/torrc 167 | EOF 168 | chroot-script -d install-tordam || zerr 169 | } 170 | ## }}} 171 | ## {{{ blend_install_netdata() 172 | blend_install_netdata() { 173 | fn blend_install_netdata 174 | req=(strapdir netdata_version netdata_url) 175 | ckreq || return 1 176 | 177 | notice "downloading netdata tarball" 178 | sudo wget -O "$strapdir/root/netdata.tgz" "$netdata_url" || zerr 179 | 180 | notice "installing netdata in $strapdir" 181 | cat </dev/null 182 | #!/bin/sh 183 | cd /root 184 | tar xvf netdata.tgz || exit 1 185 | cd netdata-${netdata_version} 186 | ./netdata-installer.sh --dont-wait --dont-start-it || exit 1 187 | cd .. 188 | rm -rf netdata.tgz netdata-${netdata_version} 189 | EOF 190 | chroot-script install-netdata || zerr 191 | } 192 | ## }}} 193 | ## {{{ blend_install_stem() 194 | blend_install_stem() { 195 | fn blend_install_stem 196 | req=(strapdir stem_version stem_url) 197 | ckreq || return 1 198 | 199 | notice "installing stem tor library" 200 | sudo git clone "$stem_url" "$strapdir/root/stem" || zerr 201 | 202 | notice "installing stem in $strapdir" 203 | cat </dev/null 204 | #!/bin/sh 205 | cd /root/stem 206 | git checkout ${stem_version} 207 | python3 setup.py install || exit 1 208 | cd .. 209 | rm -rf stem 210 | EOF 211 | chroot-script install-stem || zerr 212 | } 213 | ## }}} 214 | ## {{{ blend_install_zenroom() 215 | blend_install_zenroom() { 216 | fn blend_install_zenroom 217 | req=(strapdir zenroom_url) 218 | ckreq || return 1 219 | 220 | notice "installing zenroom" 221 | sudo wget -O "$strapdir/usr/local/bin/zenroom" "$zenroom_url" || zerr 222 | sudo chmod +x "$strapdir/usr/local/bin/zenroom" 223 | } 224 | ## }}} 225 | ## {{{ blend_install_chainspace() 226 | blend_install_chainspace() { 227 | fn blend_install_chainspace 228 | req=(strapdir chainspace_url chainspacedist_url) 229 | ckreq || return 1 230 | 231 | local p="$strapdir/home/decode/chainspace" 232 | 233 | notice "installing chainspace" 234 | sudo git clone "$chainspace_url" "$p" || zerr 235 | pushd "${p}" 236 | sudo wget ${chainspacedist_url} || zerr 237 | sudo tar xvf $(basename $chainspacedist_url) || zerr 238 | popd 239 | sudo chown -R 1000:1000 "$strapdir/home/decode" 240 | 241 | cat </dev/null 265 | #!/bin/sh 266 | 267 | chsh -s /bin/bash decode 268 | for i in users ; do 269 | gpasswd -a decode \$i 270 | done 271 | 272 | sed -e 's/UsePAM yes/UsePAM no/' -i /etc/ssh/sshd_config 273 | 274 | rc-update del redis-server default 275 | rc-update add dam-dir default 276 | rc-update add dam-client default 277 | 278 | ## misc 279 | sed -i -e 's/devuan/decode/' /etc/hosts 280 | echo decode > /etc/hostname 281 | mkdir -p /var/lib/tor 282 | chown -R debian-tor:debian-tor /var/lib/tor 283 | rm -rf /var/lib/tor/hidden_service 284 | 285 | ## cleanup 286 | apt-get --yes --force-yes purge ${finalize_purge_packages} 287 | apt-get --yes --force-yes autoremove 288 | apt-get clean 289 | apt-get update 290 | 291 | cleanupfiles=" 292 | /var/log/bootstrap.log 293 | /var/log/dpkg.log 294 | /var/log/alternatives.log 295 | /var/log/fontconfig.log 296 | /var/log/apt 297 | /var/log/fsck 298 | /var/log/ConsoleKit 299 | /var/lib/polkit-1 300 | /usr/local/share/zsh/site-functions 301 | " 302 | echo "\$cleanupfiles" | xargs rm -rf 303 | 304 | updatedb 305 | EOF 306 | 307 | chroot-script -d finalize || zerr 308 | } 309 | ## }}} 310 | ## {{{ conf_print_sorceslist() 311 | conf_print_sourceslist() { 312 | fn conf_print_sourceslist "(override)" 313 | 314 | cat < 310 | ``` 311 | 312 | With this, we've initialized our *decode* blend. It's always good to add a 313 | *notice()* call to your blend to signal it's been loaded successfully. 314 | 315 | Once this is done, we simply build the image the same way we have 316 | learned before: 317 | 318 | ``` 319 | $ build_vagrant_dist 320 | ``` 321 | 322 | Consult the _vm-sdk_ chapter for this. 323 | -------------------------------------------------------------------------------- /doc/sdk-03-technical.md: -------------------------------------------------------------------------------- 1 | The Devuan SDK more in-depth 2 | ============================ 3 | 4 | The following parts will explain the Devuan SDK more technically. It 5 | will show its configuration, important functions, and show how it all 6 | glues together. 7 | 8 | 9 | Configuration 10 | ------------- 11 | 12 | Much of the _libdevuansdk_ configuration is done in 13 | `libdevuansdk/config`. Here you can edit the defaults if you wish to 14 | do something your needs are expressing. However, overriding these 15 | through upper levels is recommended. 16 | 17 | 18 | ### `config` file 19 | 20 | `vars` and `arrs` are global arrays for holding other global variables 21 | and arrays, respectively. This is required for `zuper` and helps a lot 22 | with debugging. If you declare new variables or arrays, add them to the 23 | aforementioned variables. 24 | 25 | 26 | * `os` holds the name of the distribution being worked on. 27 | 28 | * `release` holds the release codename of the distribution. Used for apt 29 | repositories mostly. 30 | 31 | * `version` is the version of the distribution being worked on. 32 | 33 | * `mirror` is a mirror holding the required packages for `debootstrap`. 34 | 35 | * `section` are the sections of the repository. For adding in 36 | `/etc/apt/sources.list`. Separate them with whitespaces. 37 | 38 | * `image_name` is the output name of the raw image. If you declare a 39 | blend or a device name (arm-sdk), they will be appended to this name. 40 | 41 | * `rootcredentials` and `usercredentials` are currently placeholders. 42 | 43 | * `core_packages` is an array holding the core packages that will be 44 | installed in the bootstrap process. 45 | 46 | * `base_packages` is an array holding the base packages that will be 47 | installed at a later point in the bootstrap process. 48 | 49 | * `purge_packages` is an array of packages that will get purged at the 50 | end of the bootstrap process. 51 | 52 | 53 | Helper functions 54 | ---------------- 55 | 56 | You can find useful helper functions in `libdevuansdk/zlibs/helpers`. 57 | They are intended to help when it comes to writing wrappers, as well 58 | as making the developers' jobs easier for developing 59 | _libdevuansdk_. Some of these functions are required for 60 | _libdevuansdk_ to work properly as well. 61 | 62 | 63 | ### `build_image_dist()` 64 | 65 | This function is a kind of a wrapper function. It's used in _arm-sdk_ 66 | to build a complete dd-able image from start to end. To run, it 67 | requires `$arch`, `$size`, `$parted_type`, `$workdir`, `$strapdir`, 68 | and `$image_name` to be declared. See the section dedicated to 69 | "Creating wrappers" for insight on these variables. 70 | 71 | The workflow of this function is bootstrapping a complete _rootfs_, 72 | creating a raw image, installing/compiling a kernel, rsyncing 73 | everything to the raw image, and finally compressing the raw image. 74 | 75 | This same workflow is applied in the next two functions in this file, 76 | which are `build_iso_dist` and `build_vagrant_dist`. To get a better 77 | understanding of _libdevuansdk_, it's recommended to go through one of 78 | these functions and following it deeper to find and figure out the 79 | other functions and how they work together. 80 | 81 | 82 | ### `devprocsys()` 83 | 84 | This function is a simple helper function that takes two arguments. It 85 | mounts or unmounts `/dev`, `/proc`, and `/sys` filesystems to or from 86 | wherever you tell it to. For example: 87 | 88 | ``` 89 | $ devprocsys mount $strapdir 90 | $ devprocsys umount $strapdir 91 | 92 | ``` 93 | 94 | It is very necessary to use this if one wants to do anything requiring 95 | access to hardware or the system's resources, i.e. cryptography. 96 | 97 | 98 | ### `dpkgdivert()` 99 | 100 | This function, like `devprocsys` takes two arguments and will create 101 | or remove a dpkg diversion in the place you tell it to and remove 102 | `invoke-rc.d` so that _apt_ does not autostart daemons when they are 103 | installed. 104 | 105 | 106 | ### `chroot-script()` 107 | 108 | This very useful functions allows you to _chroot_ into `$strapdir` and 109 | execute the script/binary that's passed as a parameter to this 110 | function. It also takes an optional argument `-d` that will call 111 | `dpkgdivert` on and off before and after execution. 112 | 113 | The `chroot-script` is also an example on its own that shows how to use 114 | the `chroot-script` function. 115 | 116 | 117 | Mandatory variables 118 | ------------------- 119 | 120 | * `$R` is the root directory of a wrapper. It's defined already in all 121 | the existing ones. In almost evert situation it can be `$PWD`. 122 | 123 | * `$workdir` is the working directory of the current build. A sane 124 | default is `$R/tmp/workdir` 125 | 126 | * `$strapdir` is the bootstrap directory of the build. It holds the 127 | rootfs when you debootstrap it, and customize it further on. Default 128 | is `$workdir/rootfs`. 129 | 130 | * `$arch` is the CPU architecture of the build. I.e. `amd64`, `armhf`, 131 | etc. 132 | -------------------------------------------------------------------------------- /doc/toaster-01-overview.md: -------------------------------------------------------------------------------- 1 | toaster.do 2 | ========== 3 | 4 | The **toaster.do** setup is a modular web app relying on different 5 | parts of DECODE's CI (continuous integration) and operating system 6 | development software (SDK) used to facilitate builds of customized 7 | Devuan images using Dockerfiles and a web interface. It allows us to 8 | have a seamless way of using the Dockerfiles that are used in testing 9 | to make production images using the same Dockerfile. This brings a 10 | deterministic approach to debugging and allows centralization of 11 | resources, while avoiding extra work needed to write a Devuan blend. 12 | 13 | The web application is public on https://toaster.dyne.org 14 | 15 | All following documentation contained in this document details the 16 | internals of this application, of the components and infrastructure 17 | that it is using. Unless specifically interested in these 18 | implementation details, the web application facilitates the adoption 19 | of all features described through a simple visual workflow. 20 | 21 | The setup is comprised of a web interface written in Clojure, a backend 22 | glue written in Python, the Devuan SDK, and the Jenkins CI system. 23 | 24 | The main repository of this software component is 25 | https://github.com/decodeproject/toaster.do 26 | 27 | 28 | Clojure frontend 29 | ---------------- 30 | 31 | The Clojure frontend is an embedded web server with its own database, 32 | which allows for managing of users. A user registered within this part 33 | is then allowed to upload Dockerfiles and manage their image builds. 34 | 35 | The frontend talks to the Python backend through SSH, and runs a 36 | specific command to enable or disable a build job. 37 | 38 | 39 | Jenkins backend 40 | --------------- 41 | 42 | The backend glue is a Python tool which talks to Jenkins itself and 43 | does all the managing and configuration of build jobs. It serves as the 44 | backend to the Devuan SDK's web interface and is executed by the web CGI 45 | when a build function is requested. 46 | -------------------------------------------------------------------------------- /doc/tordam-01-overview.md: -------------------------------------------------------------------------------- 1 | Tor DAM 2 | ======= 3 | 4 | 5 | Tor Distributed Announce Mechanism (DAM) is a protocol and tooling for 6 | mapping machines in the Tor network running this software. 7 | 8 | The Tor DAM network is imagined to be pseudo-distributed inside the Tor 9 | network itself. Nodes running Tor DAM can use an existing entrypoint and 10 | start announcing themselves to the entry point(s), or they can be their 11 | own and let others announce to themselves. Tor DAM will store all of 12 | these announcements in a storage backend and utilize it to expand the 13 | knowledge of the nodes using this software. Over time the network will 14 | keep expanding and the user will be able to see all other nodes in the 15 | network either by querying the storage backend, or visualizing it with 16 | some kind of software. 17 | 18 | 19 | Abstract 20 | -------- 21 | 22 | * Every node has a HTTP API allowing to list other nodes and announce 23 | new ones. 24 | * They keep propagating to all valid nodes they know. 25 | * Announcing implies the need of knowledge of at least one or two nodes. 26 | * It is possible to make this random enough once there are at least 6 27 | nodes in the network. 28 | * A node announces itself to others by sending a JSON-formatted HTTP 29 | POST request to one or more active node. 30 | * Once the POST request is received, the node will validate the 31 | request and return a secret encrypted with the requester's public 32 | key. 33 | * The requester will try to decrypt this secret, and return the 34 | secret in plain text back to the node it's announcing to, along 35 | with a cryptographic signature, so the node can confirm the 36 | requester is in actual possession of the private key. 37 | * Tor DAM **does not validate** if a node is malicious or not. This is a 38 | layer that has to be established on top. Tor DAM is just the entry 39 | point into the network. 40 | 41 | 42 | Protocol 43 | -------- 44 | 45 | A node announcing itself has to do a JSON-formatted HTTP POST request to 46 | one or more active nodes with the format explained below. N.B. The 47 | strings shown in this document might not be valid, but they represent a 48 | correct example. 49 | 50 | * `type` reflects the type of the node 51 | * `address` holds the address of the Tor hidden service 52 | * `message` is the message that has to be signed using the private key 53 | of this same hidden service. 54 | * `signature` is the base64 encoded signature of the above message. 55 | * `secret` is a string that is used for exchanging messages between the 56 | client and server. 57 | 58 | 59 | ``` 60 | { 61 | "type": "node", 62 | "address": "22mobp7vrb7a4gt2.onion", 63 | "message": "I am a DAM node!", 64 | "signature": "BuB/Dv8E44CLzUX88K2Ab0lUNS9A0GSkHPtrFNNWZMihPMWN0ORhwMZBRnMJ8woPO3wSONBvEvaCXA2hvsVrUJTa+hnevQNyQXCRhdTVVuVXEpjyFzkMamxb6InrGqbsGGkEUqGMSr9aaQ85N02MMrM6T6JuyqSSssFg2xuO+P4=", 65 | "secret": "" 66 | } 67 | ``` 68 | 69 | Sending this as a POST request to a node will make it ask for the 70 | public key of the given address from a "hidden service directory" 71 | (HSDir) in the Tor network. It will retrieve the public key and try to 72 | validate the signature that was made. Validating this, we assume that 73 | the requester is in possession of the private key. 74 | 75 | Following up, the node shall generate a cryptographically secure random 76 | string and encrypt it using the before acquired public key. It will then 77 | be encoded using base64 and sent back to the client: 78 | 79 | 80 | ``` 81 | { 82 | "secret": "eP07xSZWlDdK4+AL0WUkIA3OnVTc3sEgu4MUqGr43TUXaJLfAILvWxKihPxytumBmdJ4LC45LsrdDuhmUSmZZMJxxiLmB4Gf3zoWa1DmStdc147VsGpexY05jaJUZlbmG0kkTFdPmdcKNbis5xfRn8Duo1e5bOPj41lIopwiil0=" 83 | } 84 | ``` 85 | 86 | The client will try to decode and decrypt this secret, and send it back 87 | to the node to complete its part of the handshake. The POST request this 88 | time will contain the following data: 89 | 90 | * `type` reflects the type of the node 91 | * `address` holds the address of the Tor hidden service 92 | * `message` is the decrypted and base64 encoded secret that the server 93 | had just sent us. 94 | * `signature` is the base64 encoded signature of the above secret. 95 | * `secret` is a copy of `message` here. 96 | 97 | 98 | ``` 99 | { 100 | "type": "node", 101 | "address": "22mobp7vrb7a4gt2.onion", 102 | "message": "ZShhYHYsRGNLOTZ6YUwwP3ZXPnxhQiR9UFVWfmk5TG56TEtLb04vMms+OTIrLlQ7aS4rflR3V041RG5Je0tnYw==", 103 | "signature": "L1N+VEi3T3aZaYksAy1+0UMoYn7B3Gapfk0dJzOUxUtUYVhj84TgfYeDnADNYrt5UK9hN/lCTIhsM6zPO7mSjQI43l3dKvMIikqQDwNey/XaokyPI4/oKrMoGQnu8E8UmHmI1pFvwdO5EQQaKbi90qWNj93KB/NlTwqD9Ir4blY=", 104 | "secret": "ZShhYHYsRGNLOTZ6YUwwP3ZXPnxhQiR9UFVWfmk5TG56TEtLb04vMms+OTIrLlQ7aS4rflR3V041RG5Je0tnYw==" 105 | } 106 | ``` 107 | 108 | The node will verify the received plain secret against what it has 109 | encrypted to validate. If the comparison yields no errors, we assume 110 | that the requester is actually in possession of the private key. If the 111 | node is not valid in our database, we will complete the handshake by 112 | welcoming the client into the network: 113 | 114 | 115 | ``` 116 | { 117 | "secret": "Welcome to the DAM network!" 118 | } 119 | ``` 120 | 121 | Further on, the node will append useful metadata to the struct. We will 122 | add the encoded public key, timestamps of when the client was first seen 123 | and last seen, and a field to indicate if the node is valid. The latter 124 | is not to be handled by Tor DAM, but rather the upper layer, which 125 | actually has consensus handling. 126 | 127 | If the node is valid in another node's database, the remote node will 128 | then propagate back all the valid nodes it knows (including itself) back 129 | to the client in a gzipped and base64 encoded JSON struct. The client 130 | will then handle this and update its own database accordingly. 131 | -------------------------------------------------------------------------------- /docker-sdk/Dockerfile: -------------------------------------------------------------------------------- 1 | # 2 | # Build this image with the command 3 | # docker build -f docker/build -t dyne/clojure:latest 4 | # 5 | # Then run with the command 6 | # docker run -p 3000:3000 -it dyne/clojure:latest 7 | # 8 | 9 | FROM dyne/devuan:beowulf 10 | ENV debian buster 11 | 12 | LABEL maintainer="Denis Roio " \ 13 | homepage="https://github.com/decodeproject/decode-os" 14 | 15 | ENV LC_ALL C 16 | ENV DEBIAN_FRONTEND noninteractive 17 | 18 | # CLI arguments 19 | ARG foreground=true 20 | 21 | ENV DYNESDK=https://sdk.dyne.org:4443/job \ 22 | NETDATA_VERSION=1.10.0 \ 23 | STEM_VERSION=1.6.0 \ 24 | STEM_GIT=https://git.torproject.org/stem.git 25 | 26 | ENV BUILD_DEPS="build-essential zlib1g-dev gcc make autoconf automake pkg-config uuid-dev golang" 27 | WORKDIR /root 28 | 29 | # # debugging travis (finds gpg in local builds) 30 | RUN apt-get update \ 31 | && apt-get --yes --force-yes install gnupg1 ca-certificates --no-install-recommends \ 32 | && echo "ENVIRONMENT VARIABLES:" \ 33 | && export 34 | 35 | # Tor repository 36 | ADD https://raw.githubusercontent.com/DECODEproject/decode-os/master/docker-sdk/tor.pub.asc tor.pub.asc 37 | RUN apt-key add tor.pub.asc 38 | RUN echo "deb https://deb.torproject.org/torproject.org $debian main" \ 39 | >> /etc/apt/sources.list 40 | 41 | # Nodejs repository 42 | ADD https://deb.nodesource.com/gpgkey/nodesource.gpg.key nodesource.gpg.key 43 | RUN apt-key add nodesource.gpg.key 44 | RUN echo "deb https://deb.nodesource.com/node_8.x $debian main" \ 45 | >> /etc/apt/sources.list 46 | 47 | # && apt-get -yy update && apt-get -yy upgrade \ 48 | 49 | RUN mkdir -p /usr/share/man/man1/ \ 50 | && apt-get update \ 51 | && apt-get --yes --force-yes install tor deb.torproject.org-keyring \ 52 | supervisor daemontools \ 53 | tmux curl redis-tools redis-server net-tools \ 54 | python3 python3-stem nodejs 55 | 56 | RUN apt-get --yes --force-yes install $BUILD_DEPS 57 | 58 | # Latest Zenroom built static for x86-amd64 taken from our own builds at Dyne.org 59 | ADD $DYNESDK/zenroom-static-amd64/lastSuccessfulBuild/artifact/src/zenroom-static /usr/bin/zenroom 60 | RUN chmod +x /usr/bin/zenroom 61 | 62 | # Compile some software from the source 63 | WORKDIR /usr/src 64 | 65 | # Stem built from source 66 | # RUN git clone $STEM_GIT && cd stem && git checkout -b $STEM_VERSION $STEM_VERSION && python3 setup.py install 67 | 68 | # Configure Tor Controlport auth 69 | ENV TORDAM_GIT=github.com/decodeproject/tor-dam 70 | RUN torpass=`echo "print(RNG.new():octet(16):base58())" | zenroom` \ 71 | && go get -v -u $TORDAM_GIT/... && cd ~/go/src/github.com/decodeproject/tor-dam \ 72 | && sed -i python/damhs.py -e "s/topkek/$torpass/" \ 73 | && sed -i python/damauth.py -e "s/topkek/$torpass/" \ 74 | && make install && make -C contrib install-init \ 75 | && torpasshash=`HOME=/var/lib/tor setuidgid debian-tor tor --hash-password "$torpass"` \ 76 | && sed -e 's/User tor/User debian-tor/' < contrib/torrc > /etc/tor/torrc \ 77 | && sed -e 's/HashedControlPassword .*//' -i /etc/tor/torrc \ 78 | && echo "HashedControlPassword $torpasshash" >> /etc/tor/torrc 79 | RUN chmod -R go-rwx /etc/tor && chown -R debian-tor /etc/tor \ 80 | && rm -rf /var/lib/tor/data && chown -R debian-tor /var/lib/tor \ 81 | && mkdir -p /var/run/tor && chown -R debian-tor /var/run/tor 82 | RUN cp /root/go/bin/dam* /usr/bin 83 | 84 | # fix npm - not the latest version installed by apt-get 85 | RUN npm install -g npm 86 | RUN npm install -g redis-commander 87 | ENV REDIS_HOSTS=localhost 88 | 89 | # Netdata 90 | ADD https://github.com/firehol/netdata/releases/download/v$NETDATA_VERSION/netdata-${NETDATA_VERSION}.tar.gz netdata.tgz 91 | RUN tar xf netdata.tgz && cd netdata-$NETDATA_VERSION \ 92 | && ./netdata-installer.sh --dont-wait --dont-start-it \ 93 | && cd - && rm -rf netdata.tgz netdata-$NETDATA_VERSION 94 | 95 | # Openresty 96 | ADD https://openresty.org/package/pubkey.gpg openresty.gpg 97 | RUN apt-key add openresty.gpg 98 | RUN echo "deb http://openresty.org/package/debian stretch openresty" \ 99 | >> /etc/apt/sources.list 100 | RUN apt-get update \ 101 | && apt-get --yes --force-yes install --no-install-recommends openresty 102 | 103 | # cleanup 104 | RUN apt-get --yes --force-yes purge $BUILD_DEPS \ 105 | && apt-get --yes --force-yes --purge autoremove && apt-get clean \ 106 | && npm cache clean --force && npm uninstall -g npm 107 | 108 | ADD https://raw.githubusercontent.com/DECODEproject/decode-os/master/docker-sdk/supervisord.conf \ 109 | /etc/supervisor/supervisord.conf 110 | RUN sed -i "s/nodaemon=true/nodaemon=$foreground/" /etc/supervisor/supervisord.conf 111 | 112 | RUN groupadd -g 6000 app && useradd -r -u 6000 -g app -d /home/app app 113 | WORKDIR /home/app 114 | RUN chown -R app:app /home/app 115 | 116 | # Tor's socks5 117 | EXPOSE 9150 118 | # supervisor 119 | EXPOSE 9001 9001 120 | # redis-commander 121 | EXPOSE 8081 8081 122 | # netdata 123 | EXPOSE 19999 19999 124 | 125 | CMD bash -c '/etc/init.d/supervisor start' 126 | -------------------------------------------------------------------------------- /docker-sdk/README.md: -------------------------------------------------------------------------------- 1 | # DECODE OS - Docker facility 2 | 3 | 4 | [![Powered by DECODE OS](https://decodeos.dyne.org/img/decodeos_logo-800px.jpg)](https://decodeos.dyne.org) 5 | 6 | The DECODE operating system is a brand new GNU+Linux distribution designed to run on servers, embedded computers and virtual machines to automatically connect micro-services to a private and anonymous peer-to-peer network cluster. 7 | 8 | This is a Docker build of it to facilitate development and testing. 9 | 10 | ## DO NOT USE IN PRODUCTION 11 | 12 | This Docker image is provided only for testing and showcase. We do release DECODE OS images for use in production on https://files.dyne.org/decode 13 | 14 | In order to test DECODE OS in Docker is possible to get the latest image with: 15 | ``` 16 | docker pull dyne/decodeos:latest 17 | ``` 18 | 19 | And then run it with: 20 | ``` 21 | docker run -it -p 9150 -p 9001:9001 -p 8081:8081 -p 19999:19999 dyne/decodeos:latest 22 | ``` 23 | 24 | Then connect to the web interfaces to monitor the functioning of DECODE OS: 25 | - http://localhost:9001 to supervise the daemons running and their logs 26 | - http://localhost:8081 to access the list of nodes and their values 27 | - http://localhost:19999 to monitor the resource usage 28 | 29 | At last, you can use localhost port 9150 using Socks5 connections to be routed through Tor. Your application may then interact with the listed nodes. 30 | 31 | ## Build 32 | 33 | To re-build this docker image: 34 | ``` 35 | docker build dyne/decodeos:local . 36 | ``` 37 | 38 | -------------------------------------------------------------------------------- /docker-sdk/docker-create.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # This script will run the keygen script for a requested amount of times. 4 | # It takes an optional integer parameter - amount - for the amount of dockers. 5 | # Otherwise it will default to 5. 6 | 7 | usage() { 8 | echo "$(basename $0) [number]" 9 | exit 1 10 | } 11 | 12 | [ -z "$1" ] && AMOUNT=5 13 | 14 | case "$1" in 15 | *[!0-9]*) 16 | usage 17 | ;; 18 | *) 19 | AMOUNT="$1" 20 | ;; 21 | esac 22 | 23 | rm -f onions.txt 24 | 25 | for i in $(seq 1 $AMOUNT); do 26 | ./keygen 27 | done 28 | -------------------------------------------------------------------------------- /docker-sdk/docker-start.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # This script will start containers that were generated with create.sh 4 | 5 | for i in $(cat onions.txt); do 6 | onion="$(echo $i | cut -d':' -f2)" 7 | container="$(docker run -d dyne/decodeos:$onion)" 8 | echo "Started container $container for $onion" 9 | done 10 | -------------------------------------------------------------------------------- /docker-sdk/docker-stop.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # 3 | # This script will stop and delete the created containers and images. 4 | 5 | containers="$(docker container ls | awk '/dyne\/decodeos:.*\.onion/ {print $1}')" 6 | 7 | echo "$containers" | xargs docker stop 8 | echo "$containers" | xargs docker rm 9 | 10 | images="$(docker images | awk '/dyne\/decodeos:.*\.onion/ {print $3}')" 11 | 12 | echo "$images" | xargs docker rmi 13 | -------------------------------------------------------------------------------- /docker-sdk/exposed-ports: -------------------------------------------------------------------------------- 1 | 9001:9001 2 | 8081:8081 3 | 19999:19999 4 | 9150:9150 5 | -------------------------------------------------------------------------------- /docker-sdk/keygen: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | container=$(docker create dyne/decodeos:latest) 4 | container=$(docker start $container) 5 | onion=$(docker exec $container dam-client -gen 2>&1| awk '/Our hostname/ {print $6}') 6 | echo "New DECODE-OS node address: $onion" 7 | image=$(docker commit $container dyne/decodeos:$onion) 8 | echo "Docker image: dyne/decodeos:$onion" 9 | echo "DIR:$onion" >> onions.txt 10 | echo "$image" 11 | container=$(docker stop $container) 12 | 13 | 14 | -------------------------------------------------------------------------------- /docker-sdk/run: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | ports="" 4 | exposed=$(cat exposed-ports); 5 | for i in $exposed; do 6 | ports="$ports -p $i" 7 | done 8 | echo "Starting DECODE OS Docker" 9 | for p in $exposed; do 10 | echo "port exposed: http://localhost:`echo $p | cut -d: -f2`" 11 | done 12 | docker run -it $ports dyne/decodeos:latest 13 | -------------------------------------------------------------------------------- /docker-sdk/supervisord.conf: -------------------------------------------------------------------------------- 1 | 2 | [supervisord] 3 | logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log) 4 | pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid) 5 | childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP) 6 | nodaemon=true 7 | 8 | ; supervisor web GUI 9 | [inet_http_server] 10 | port=*:9001 11 | ; username=decode 12 | ; password=decode 13 | 14 | ; the below section must remain in the config file for RPC 15 | ; (supervisorctl/web interface) to work, additional interfaces may be 16 | ; added by defining them in separate rpcinterface: sections 17 | [rpcinterface:supervisor] 18 | supervisor.rpcinterface_factory=supervisor.rpcinterface:make_main_rpcinterface 19 | 20 | [supervisorctl] 21 | serverurl=http://127.0.0.1:9001 22 | ; username=decode 23 | ; password=decode 24 | prompt=DECODE 25 | 26 | [program:tor] 27 | command=tor 28 | 29 | [program:dam-dir] 30 | command=dam-dir -t -ttl 10 31 | redirect_stderr=true 32 | stdout_logfile=/var/log/dam-dir.log 33 | stderr_logfile=/var/log/dam-dir.err 34 | 35 | [program:dam-client] 36 | command=dam-client -ai 5 -dh https://dam.decodeproject.eu/testnet.txt 37 | redirect_stderr=true 38 | stdout_logfile=/var/log/dam-client.log 39 | stderr_logfile=/var/log/dam-client.err 40 | 41 | [program:redis-commander] 42 | command=redis-commander 43 | user=app 44 | 45 | [program:netdata] 46 | command=netdata -D 47 | user=netdata 48 | 49 | [group:network] 50 | programs=tor,dam-dir,dam-client,redis-commander,netdata 51 | priority=10 52 | umask=022 53 | autostart=true 54 | startsecs=10 55 | -------------------------------------------------------------------------------- /docker-sdk/tor.pub.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | 3 | 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 298 | ly6B+071BA4n0UX0tV7zqWk9axoN+nyUL97/k572kLTbxahrBEYXphdNeqqXHa/u 299 | dWpTYaKwSGYmIohTSIqBZh7Xa/rhLsx2UfgR5B0WW34E8cTzuiZz//////////// 300 | //////////////////////////////////////////////////////////////// 301 | //////////////////////////////////////////////////////////////// 302 | ////////////////////////////////////////////////////iQIcBBABAgAG 303 | BQJLaRPhAAoJEMXpfCtjn2pmYaYP/j/TT5PPK6kZxLg1Qx6HZZAOYRtHdGIub5Ff 304 | a8NO8o2LreO+GlHdxYyRajRKIlvunRWzcumKqmD4a1y7Z3yZeSwFCVMzANmki7W7 305 | l/nKtfAwr+WZlOA1upGTloub1+0JEAk0yz9N1ZXA9xruh8qH7HgTIBOM6BF3ZmUm 306 | Zj5zsoGpBS8wvcPg9V3ytoHGkyowCSXVvNGmOenlHsxQyi4TsPmMyCtf2Xnjk0uC 307 | 3iE7U6uSev4Z8B6yXYwKV/NL9lic1VaMu5UG8QD7JSR2XWFRQgctk8pO5GHXXVcW 308 | AnHWK9HvAPhnxv7UCRsb2dzuJzq3s0r9F5pYS2ea4wp/DOn4PzSlF7D7V4mnPg0C 309 | W6+UcEOUnO25z1bAssKnrTngPsb9y9sIveK4OLve0IsKoQ1tEhPc2bkC+b2l5fxh 310 | aWkV7PplRgE0vYftJQwUD4ttaD5HTfwSis6//9hgpeVRW/q5DmOuR7YQroiK0/Ix 311 | RgKySBeJ15Lv+AT6Ta4GpwvPYk7HeflFDRSJbWvlmJBDUPbQtpsI/egWitCskUGT 312 | /QAM06OcBvGqLnM6bacEh9GhAiTcvJHf1EfCAJGZMY2OPs8n0A5W+GjQ7FRr3pqY 313 | IxXDaNK3Iiqz0JeRskS0I9ms7r+OoGhnGM6rKG3o0v9o6iSzJ5E3hMWgq8q1rl6P 314 | 62lgVkCziQIcBBABAgAGBQJMm4KuAAoJENh0cn4zmn+obikP/2H3suQSV6maiLfY 315 | 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 349 | 5aRDE7TwOhrt2ymPVzLvreRcaXOnbvG9eVz3FYwSQtl4UbprP6wjdi9bourU9ljN 350 | BEuyOAwoM0MwMwHnFHeDrmVFbgop3SkKzn8JHGzaEM+Tq6WKHYTXY3/KrCBdOy1s 351 | QPNeZoF7/rq4Z20CcrQaKdd0T7nAEy7TLQIXEnKCQKa2j+E55i584dIshxVWvNuw 352 | sfeZ649f2FTGM3hEg527BZ4eLQhZQLHkjIY+0w0EB9f4AhViZfutakQf5uqV9oRl 353 | gmHmQsN5vMKryC1G15HO9HPSMJf9mvtJm7U+ySNE354wt2Q2CwX1NdDLa8UUzlpG 354 | gR6cd4PmAyVrykEWdtk/4ADic+tu4pTJVx92ssgiBAQoi/GMp61KPcxXU9O4flg0 355 | HDYjerGuCau/5iUKWaLL9VBe3f////////////////////////////////////// 356 | //////////////////////////////////////////////////////////////// 357 | //////////////////////////////////////////////////////////////// 358 | //////////////////////////////////////////////////////////////// 359 | ////////////////////////iQIcBBABAgAGBQJRcGlBAAoJELlvIwCtEcvuoWwP 360 | /ReLzhFKWlc/F35MvNyO1usz+qvs+SrlAtwaNcv3Dd9ih0mw+bH+U+PVVgXlk1g0 361 | NY9hNNRLxt2mUc+mg9ttN+ha0RkqUYsYjg1Wj9bDuR0a+3DhtuS9hhEjWrBBT3Ub 362 | TcWT5lxKkUgy4Sj+Dh0N78spHo2orUN3qRw3VkHY4hWcxAvlXreuEv6J7Ik4uZ+8 363 | MMgJFld4oVhMmnWOrMwt10D58URvZsGypI+dK0p2JSue5yfBWkSMpFsJ8z2cCOBM 364 | APQq9S63mhXZiORrxJS4pzJ87wcYG/H3R1pqF6I/49tWBlyZwiwOYs0fFEJc9idF 365 | /hSzen/qDDQpvy4gNF48if7SGEtOBu1vEGqWKvNsataNcjYgj4BZhDlMHgAxWn0G 366 | 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 685 | =Rej8 686 | -----END PGP PUBLIC KEY BLOCK----- 687 | -------------------------------------------------------------------------------- /docs/views/img/decodeos_logo-800px.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DECODEproject/decode-os/a2ac08e3bc76b851e8c18341ab451354c82dfce3/docs/views/img/decodeos_logo-800px.jpg -------------------------------------------------------------------------------- /docs/views/img/decodeos_logo.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DECODEproject/decode-os/a2ac08e3bc76b851e8c18341ab451354c82dfce3/docs/views/img/decodeos_logo.xcf -------------------------------------------------------------------------------- /extra/deb.torproject.org.asc: -------------------------------------------------------------------------------- 1 | -----BEGIN PGP PUBLIC KEY BLOCK----- 2 | 3 | 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 145 | Ey7TLQIXEnKCQKa2j+E55i584dIshxVWvNuwsfeZ649f2FTGM3hEg527BZ4eLQhZ 146 | QLHkjIY+0w0EB9f4AhViZfutakQf5uqV9oRlgmHmQsN5vMKryC1G15HO9HPSMJf9 147 | mvtJm7U+ySNE354wt2Q2CwX1NdDLa8UUzlpGgR6cd4PmAyVrykEWdtk/4ADic+tu 148 | 4pTJVx92ssgiBAQoi/GMp61KPcxXU9O4flg0HDYjerGuCau/5iUKWaLL9VBe3f// 149 | //////////////////////////////////////////////////////////////// 150 | //////////////////////////////////////////////////////////////// 151 | //////////////////////////////////////////////////////////////// 152 | ////////////////////////////////////////////////////////////iQIc 153 | BBABAgAGBQJR+DzBAAoJECIs6MQ2RAKIjU4QAIi24KlFH1hL0d45GsQswFJ3Yiok 154 | F62jpXRU2x7/+D+cJUqA4omjaGkSn0Go+J2MG8/bQST/Eioev8/PtHpPVRWyOq1A 155 | CUueDFpvzXAmxEBA25OkdDRWiy2y2CUSwu2n/OJBg6+C3TIRyoqzs2YiXIDr9TDi 156 | 7NcXUP2Gd+xDWyEh5zd3xilAZl/SNkW73gen2GnG0WRMjzvJ9SSqYVFGw2L0oaSy 157 | X+HI3ulAybWuYaHtwREcgcKJpRK7VMeICERRzmGQxaUzbBtsWf1lhVUaCjINbKEO 158 | OfuqEqcRGsXl3AJw/qYUaj3CE7hTiUpQ0kcDw7G0NvuYOFqBjTAZVOpr45vbOqCq 159 | Kp4upNh2KLsGcGqzBy+RubsEsbOmIuDImyjFLpGHOZv54mJNLQ+SDbbLcj96EPZ5 160 | +gg7ip7+e6gGqGhJEOQLWeXejTk2rAX5zgkHutmjqY7qZIe63iXnlq88B66tZct2 161 | dYwv3M9t2X2Mkx3UR1UxQZ8wJjmSYSS49HDfIZh5NIz58QH8AePltBk32yMxSFq0 162 | lndGKEyhE2omMyNYzSt0EcXcsaaiqrphQ9iPJ8fCY29MOkKRQz9S3P/NOZFQrqL3 163 | zavfJX2+npx0umP97xPIowMPn0QZEWkTf2rvcG3s8s5jfUNOsi+ZcPazhjwqV6tX 164 | 2OvbfK49CG3vTdcAiQEcBBABAgAGBQJQSx6AAAoJEH+pHtoamZ2Ehb0IAJzD7va1 165 | uonOpQiUuIRmUpoyYQ0EXOa+jlWpO8DQ/RPORPM1IEGIsDZ3kTx6UJ+Zha1TAisQ 166 | JzuLqAeNRaRUo0Tt3elIUgI+oDNKRWGEpc4Z8/Rv4s6zBnPBkDwCEslAeFj3fnbL 167 | SR+9fHF0eD/u1Pj7uPyM23kiwWSnG4KQCyZhHPKRjhmBg1UhEA25fOr8p9yHuMqT 168 | jadMbp3+S8lBI3MZBXOKl2JUPRIZFe6rXqx+SVJjRW6cXMGHhe6QQGISzQBeBobq 169 | QnSim08sr18jvhleKqegGZVs1YhadZQzmQBNJXNT/YmVX9cyrpktkHAPGRQ8NyjR 170 | SPwkRZAqaBnB71CJAfAEEAEKAAYFAlKGBO0ACgkQN4Uj/AufSZbFOQ6fbHEEerx0 171 | zf6FtLG2/EyK00q95yQY363WfM6fXvEbEHe8RThPoZswxLAn96yfTNWXLhDS64mu 172 | DntsPPpenk86siNzp9Br8qN1fKkZY2tBjyUtvGz9i+paQWowXPfFeV5WutjqRY3c 173 | n6xY4SXWNWyffr3XTYqublnWs4s+yJuHQeb3XiWX4o8p9csmTuC5sJgmZpkvppRg 174 | zRpHAd8VCzzC/cMEVeV2+cbFon4sHw5NJVAXbaRoZ/P4SoA6S2Tz0SB1FWNa1v9T 175 | Eu57/f7l8XYdI6nL4y6imnJ/RZqgpG7gJUqJSwS/iu80JJqnZJ030hWrRZHHp2k+ 176 | ZWr/kZgKGCxHbRCcQNpJCmPmSuJccVABWIkoKjgVR4jXDbh+saGYLn2eUUzxkZmd 177 | 7xaDSNUBhP2qdtKlGFc8ESL0qZkwixLhmpgUgFsf7D/bGGJyVkhOji4rJDZx9I0K 178 | 5s0JrDrEqO0nzYod08s7aaOcQrgMYcQA7x/Z3BlSuRRo6KK61dOO42SzSbFSEW5Z 179 | 8IEfSoUYHoyN81kbfC+j/q1dpwg+Bhw9PTqSWfLiXI6H15X7H/Ig6NDK0U9v9s+g 180 | qmqG0AtQhEnCEqKNZFV1K8rnY+B+lNXMA0PIgxA0iQHwBBABCgAGBQJSjUjjAAoJ 181 | EMQJSn+pq5SBKV4On0Gzb3r2SAx4CM9zAhGoQw81yM34WUHrkDESj2TrKw0sLYLM 182 | zM3wriEzFT+88buowSBT8h3ONNDijbj8NdjYQCfY90bqgAROZ+W9/dmV2C9dJxmv 183 | 5kWJQ/5D2ksuVpu1LUyK6AWXEkV1KpIcRHCP+Kb8EWaMEjPPQbNJ1KrFzAFfIUeF 184 | TbBL5kMmJK5aYVUiHWnLZq0SK5OlWGqBihuRLI7OIoBOjlcoXvFoEgSkgUKpapE6 185 | C9VkErW60WCK91sMhaa8CY9pVDPaanMG2o73BfS3jGPylm4H2+8jlJ1+l5ietvoy 186 | iqOST1iIfOsbi30mxuVJ4JBvKtmapqpBwT6eNvCiPKsMyjB5oWI5IVbK8MDIaYQM 187 | 9TL+nyMGhl19GzcUMP8tZRlCifM9b/zmMMt1sgVY0koF8AZfh3Ho9KLyXqNMUtXA 188 | FSQrAcTbN5SmzjlJtl+hz6uhiHH9kAeSX4MFRXX6JDfZxyAw72JqJkZaPEAKQCpo 189 | dkNwNG9b2dedIBsTaD9IoEkryDtR17qV2ePwlCeymuwNnGVVaJ8hLbI7ZATbIaSn 190 | 7XNvMGM8hX0N/ram5nTvrR2laG1o1ss5oxtg7PfTrhMyCTrzTcxc8VskAgtbJjoy 191 | i4kB8AQQAQIABgUCUtLMDAAKCRCkIrnY5Sfb27Z0Dp9OELHk0T6eraFt6k8z7Nrx 192 | U6Bq2VroUQxcRFBLkdRhjN1BVr5P2u1J2h7Gly6maqiiHalpQm9RMHXRSSomVPha 193 | v7EZvOlQHiujkJDcDLWyLoFtlgvTD63vA/YFbnceWY2ATY6gp1/sp/t9zO/ywGuk 194 | 6+xlVKld2jNJbQpkBwAUadWnEFpFixtyEIgOU8uuIV6wj6/3VywshbG1Ml3HL4E4 195 | qpSqOTgoesQvLyyNjlI3JL8KB+cljNxJxBOE5sqRgB5PhD9mlZDX5WFjL3EWwQHi 196 | 1SpPPmuviciSZy0Shw0yjevvpMnHnkzeH29Qb9gDfkvlmS5Hk2rYm3qvu/I59xEt 197 | mJfSXYpOyhe3EsffmOxHEqLmtQ12cx1TuKz0gXFnh+Mm/txE+sVHsiuPomanf9Ou 198 | 6k8RA+mQ3+715P/PhoqG0Qu6G+GNCIoB+21ln8Yr+gwbsKXEYqVQITEXqDkeNlCH 199 | y9SFjpPXf5XJh45k4mLxul0THAwLt1R41ChP42/+r3KuYWfXXAUsz0Cf5kfQLYqp 200 | wN2OkXytVK26UN6yVLuFBetTU4uJWtJBQBE3HyUtq00YASfrWy9ITz1Qv/NWc4xd 201 | poJ789An1cV6UO7p9oi50Sine6uJARwEEAECAAYFAlLZiisACgkQSOuLLWa+vONc 202 | vgf/dnXvCwyo+FI31dOaOntC5+pSEYMaXsW4KskOwP6HWfSvAfzfXDTWhWSUeLQA 203 | LfhPF2oXMnd6p9K7KbyO3HcJeKbJTvgyLHaHo7i/IO0gQ1goxPbECxAy8RtoalJA 204 | q3OZoejHgF3KytdiygqtbjD0M3Nj+T689guI9FyEwc0hsbpMbaAv74/d/of4BnEF 205 | M0CKty+EBNavFxem6kxabeovrSVC0mXaxTZHIN88dAZCwHHhgnfgQ7/vjOAUaVrs 206 | 5Fx/7RaV6v63obod2UrLZL6amaLfqt+BjAoBlL7DP1NfGpGCRWKaINua3WEy07N3 207 | mEqkdXn+gUOJYRlg8eHr+NWCK4kBHAQQAQIABgUCUwZ2bQAKCRDYL+A8xVvP4z1w 208 | B/0Tm1zmM2lNEfJbnQhISXFpcdyIm2EQkGVHEFFE3YjxxIhFatrz67ro7y/Spitn 209 | OZbyt0xrj5vNOBfTKQgVgOhkjPLcZiJ3TyFLgCqGT/3RKzKPgOvfQWwXrExmNL9a 210 | RensijwOXIIenDmlFxwgjpeSz4ljeuuBLsJPiFDPG4t0Me/D6KVvhNBCXoXdzy5A 211 | uV8gSCHumCPaL13vCtAdAzDFg8nYHWn04xggf50jvwtaqWu7VcLxixXYfaoSp3W9 212 | ZGxWAR7/ee2YV0KCxaPQ9SADxM1xK96vRbDYGlbyTZSY+96Y3rDugzXwRFxx6+iG 213 | xpfyK5h/loKO2ZuESGFvA304iEYEEBECAAYFAlMI0FEACgkQhEMxewZV94DLagCc 214 | DG5SR00+00VHzBVE6fDg027eN2sAnjNLOYbRSBxBnELUDKC7Vjaz/sAMiQIcBBAB 215 | AgAGBQJTChVdAAoJEA7aqUXopP+Xnn8QAITUo4Kkapocg1wurgpYjetGyz9pI6Pw 216 | tV27Q9xWWjLWRnZhlsHhSo1JhvNY9QBIKb2QQU+WGoBRtWPIxm0AtbhmGBlKscRR 217 | MYfKB0U2pFE6HGDh7tWPzSzPWHKb3oobyB2bmgtBNsWGBxgcoQESC18uZnYJ2ffk 218 | 6N5BhU7JnN5PD6TeKFokengr+BVkxwB0sVP5Zahc7lXNnj7mDTeths0ZyxDTzog9 219 | AnImKlJR7Qu/uhhhz2mYnobS9tgzvyqRtibmxd7RLwlGOwf6/jUA3wmYgvN1B17r 220 | eB1GwylK9eRIem1OPG0t2UV/i6ik9BFMrwruoeTDd1POnA7+SDLXC2tUbGwBK4PE 221 | KbD/IMe43dKQypaAYXQgWqwl3Lf3t9eCAfW0X/PRUdcSxA8WWpY6pFqT6Eg1GicS 222 | nwarhvSWcs9I3FNo7foBcu3S6+wO6jK6/izOOymznuzGputQnVCZuVIL3FF+QC95 223 | popTUjnTBRF6O1p2o5OfEOAJ2f76c3a/tZuPB5Z0WfivuQXzDDsEC7O7SRkYMvCI 224 | 8Vs/H6fijsOnKYtSvHRbm52R0zFWHPFCK36/tFaoUVrcPNbGyFYT2klL177G+e6m 225 | Jubz8nzPMLlWzP5utUYY8gM4UIaGr/mPudKmT2jFp/25oFKpxaiBrROsXVv9+NQ0 226 | 1QYtxT5BueyoiQEcBBEBAgAGBQJTvqMiAAoJEI+pYEZFy373UtcIAKwTS8XZfbg6 227 | deDe5KWGFgxotBTIDYckAi85usBWVYWfS9W8IXpfI9ffa86Uzi/eoowGX+Ffz66F 228 | I77PyydBptHqiy2KkaJaAZEpaZssH/k98AA40+Yk+wHYAIzhHaiN+Jq4w1xPf5Gz 229 | OSvWvCdlli7ZeD+Emk6olpkASQWzQZWi+biLral/XtnJvv47n3H6SLwBYvwCwrtA 230 | AQtl53wCqXs6Lc8spNk8ZqVcHpiXgbHCYGxfpjeCbLEEKv1nIBokB7SMbWXio6Ul 231 | Qvk/fb+P6D7HDsj7ee3D+f0B4L9zfO4pMwh8LXzqVl1iZh82vaiJgz88ZZN13jGc 232 | m373uLTum0mJAVwEEAECAAYFAlN7sHEACgkQinL5E/UMZNrrkwn+MUwJ+7UD2quc 233 | LujCI4s6q1LmJ4f9QeGxVvOR1KyeOQcai2d2tZpOSpdoYlemy6Alx/rDqwqw5nbG 234 | AboXrYfZcw03E5Y0xGUfb+b2Mow5cZLkbwomdvyi5o1/ZubIOjVDzoHkMXN0dCUO 235 | g/iIHr5IE64DdRfnhB40vq4eJ7Cc7kVIlL2ZziB9VXPdiHo3jlmn4O6wGPwLwmFi 236 | S9tGGydnMQ12u8BnPUgZ/Ifuzb6dPkOEPeQXVtrsdmkX5gRBtibguCj2LMGSSPTF 237 | ipc3kBFumnoF6cp07VYnhvCMWviFYqqkRJNoml7X6MVbr4pQVHLucPYDQiRfnxx2 238 | Y1KK+ah72c/df+k9DQZQqma3I8JTjbEXkodUrXs/EixGZNTcmJhuep7wmmEm9Rbz 239 | r/pwgY8+SWqMhEX4L+C5yPgNYW16p92JAZwEEAECAAYFAlN/s3EACgkQT6OOgi5P 240 | pI9TFgv+OFy96IroX2f5b/lRhV8S0SO25Dd62a59RHfujDjVOas/aU/WheAuR/yI 241 | AJiB1sQ2gN9M0lwBABl2N87V2DnJuP6Z6Mf1q+rFxvN6xuTPy+H6g9DzL+5gm1be 242 | m7CDV+RU6wlVGFOxK7HaQoDEcifICkYf7RrDrW8jGf96vRPocqv3BrvA44XxI7UG 243 | Q4T9RqauHMma00Xr5fkNvuY7gOGwslJdNA0Cx3QrhBI68quF1pdENghDQ4ZFVflp 244 | L37iDiFYFtdY+/jJjFy8zDMpODGbc4HnSVvGlNv6tJj599d9+exPQ8DGY/V7wdyQ 245 | seHUYwUeu88GMklb5yvCjFlTT1nJXla2PqI9ZfabKvneKZI7QGv3HdZgX4e4eris 246 | 5HpI/81riVdPhxGykZpgaXPElnOEETVKwgZO71XxrASwpogivUYo9c4K8Ioa8P0+ 247 | +wXLznMYWTXd2PVbPb2rxMRdP+SKnJcHLiakDuX0SpjAhYta8E+WXFgDZiV3WjfB 248 | /+w9VjV7iQGcBBABCgAGBQJTeAGoAAoJEEQpB7WI38RX2kkMAI5kSRzQZ02ENkpb 249 | svSs5oLYlZcZejGsa9swUL17+P5h9kpdgXhVmjPJIskM5el2Vef6vEwpJrJFtDfG 250 | DpfpegIRRroeD0vFFntOdH3MSQgemel1BXb1UNRdXSN2zXJpuZYm3DEjRTUu6UBd 251 | ams+H5lZ4sD8dXswXQL3eJ+JeHYqYNm1vd4jzIstSQ0XNVJulP6Lltipw+5efz5E 252 | Cli80sfesb34pgw+g121vv+5xYZXu36Ey0pRTnMnrlwjkAmtOF0DiRimbYladQMd 253 | zL/LdQNLdhM2JU0ymQgggmvRA0XiNZuxCWe/kibnmluruv07jPPO5eBRbjPugaMN 254 | CBAvBScj3WYPwap2d7SuMUpt7ReqMXPCJGkCYqfUe+oT0lkX83O6KE28UK82Fc02 255 | Wv6W+kXy+W04t0PQ9cQkYz7ZGSHHjFnz7Z8ppUyA8HXn8009MMY9b00pbqjIodCz 256 | g0Q65srA0sfTAXx/s4YoMHqKAgo9MC5jpJk9D44Cby/UwRuR1YkBnAQQAQoABgUC 257 | U3jbEAAKCRDy7y9HBp6Lj+XsC/sFTonJJhnfg6LreOGAJj10s3T9Snq72kQFiECx 258 | XWu1xW9pK8BsCKZMO4UfaoQBvwlmxf1kUKlgfTNqkBGhz+y14z7gkFX/cOVCV8yl 259 | AX7f/z0ReiMwTpvIPsh2NTCaN8dzw3dgcptoZ6+IleLXlZ6B4rrQHCj53abuonWk 260 | 5IYLjbijnNYV6iC4t8fVkVYtXdlC/DGpMmplc9pNrEZLSkBGeIKBGKvvJBXk/09A 261 | x/2weTdzxCsKSv79N0+Hw/IoTBWMG5Te2PkcdJq2LYQiEGKXwFQOnl48gAb+JEY/ 262 | 5dRtYq/Gq9T56x4jadh79WoqQ73w2ZzaYnMMkjq3ckIKYxmqO+SKcNUTXArkvQ1l 263 | FDzmGEEH5JwnlDILUA6qCQWIhN8KduEGcNz7LM8jJPOm0FqhroXa5gPe88F/X9Zn 264 | tgXYcMiz5ASVbf+rdk6fr8dNFZoW0Ci26TyAAs6gBsPEbVMdRuW5ko0YALqOsVjg 265 | trvTXMbd97v80O1Lwv8ENhcBxw+JAZwEEAEKAAYFAlOAwOkACgkQKtPtQ+fbFY+a 266 | QwwAvjJ3jprp9cwKu1kkmZn/gCNwc2BqGDeu5SfEF03IA4G6lwLRkL6e9RtiLfbo 267 | HTxHskOE9w8TSGANrgt+OIXbFQgJ0BzujTL0eQNagVJXcadcOxn4Fd/adQDc8Qzc 268 | Bo8MH1EH6pPVRDqePqbrreKNn4cjJpAvUWhs1lebWj8li9TffianzX7I1hQuankv 269 | STi074ZpNpS1Sp8O7ipbokFc6+8o/4KnLMgNrD37Pd/HCK/egr3k3Xd3dSFnERKw 270 | e9nt829Dyir67V43wDKGRtL67AOEqNA9md2O9dGxoC0NVmA5UcO2DO/1yjdlliAV 271 | sSzXxI1SLlZ6RywkzXZp7S6eaGgbAvU6w8FDA2eQxK6NVx4o194e8eTYvl1PPWaH 272 | UnkMvbry8JII4mSMQ+A3wl0DXOyNmu4fjN677ty3gSEHt7/yjTA6YC9tAMi8VLO/ 273 | 3qntM1ptxeLH2Lu8sAP5pB9QM98U1o/yO+lpZij0niaTRIv36JdDwrEyd71nabtR 274 | 5LeCiQHwBBABAgAGBQJSn809AAoJEP21uMBn8lOH5OwOn2sjIQLjowLD+bOxnm2F 275 | c0SPAI+UJqeMOw8iUWKcE88iFT18y06TpqUEaeLAoZSAPWDPx6PI4WnL6QSgz7ia 276 | 96dg4VU1FS/gUUVqExScq5WwttH7a95wjjBFuMhwNrvGyrx8DyFM2rKqj7cmydsH 277 | Y18e1eVuk6cFp6SRR5ek8qhRLG9G/zXutU8e5gfJv9FFIysruNztJOaePXRQOxVF 278 | JZmmZoxq33cUjdx28EV22jplmJ+Ku00S+egZi1mZJccFwmNZ8BF3ZAv0dFNLOjTV 279 | OKNO4WoW3NtNksy1/T2hwhAERFZU89p1XSF3D1HaN4TiCYRP9pm3yk6gfFkYBOY3 280 | 183aICQYT+w+KVdg8rxPkiryF0NV6f9kjfYS1sAYPqUMIzKYhV/h1UcPuqe0KK0f 281 | 5NpK8obXO2lJzLZE7gqtbc88G3Rg+3vDukD4boSHdOhm6ii6ZamD2qdrFQDjROjR 282 | y85lmmNJxXc14iAl0pNKE1EvTcJgJ9FnQngtaSYuk+YsqKcQzTMiBRUwUwxY8Vm3 283 | jKOh0SrG454RBGsleG8CfCGj44bxFE6Q4MldvJAkkYCfM7zSww/p5rOpN/Su3NMY 284 | 4gYCHpOO8zKem4EzwJ9ENt4cAjH/hYkCHAQQAQIABgUCU4BKagAKCRDxLZhXQ+4m 285 | IKfwD/4zG06+G+lasq22qv0gQHzdkqXJqjlpkJ+bYgUbxvxYFevL+eXboCjImgdT 286 | qcN8xoBd5fMc3YxXbjBR9YmQYL+5GqKILme7bVfOIOsRlRP/V4zroIV+CnISEa6U 287 | vEKm2u0q+Or2KzZhoT+mDIfQpjhucnYNB+jMF5ogvaLCmPxu9Tsj/PytO84hPoiJ 288 | kvqDrAq558JMQRAy5MKN3p4GyTKAjSyvqqUrmrcMnbSOhsuy2mTiAYxLn/CN5g+M 289 | JClNUhOn+sPN6RDMw6usQtmOoSws9ZKKGpiQNPFidNbtZ6SK43vO98mOkMNFnxOS 290 | bKdFkeIHYW0nC+EuJtkPWS1v9o1hW8M+rTRwH6N//51mZ9iCOhgyX4H1+3VPVuqY 291 | nfqedmwALoIYeoQ42x/3lRfQWlqJpiFbY4xwJKR1ifFerziqaIxvpcq684t2Hk8O 292 | OLNeAbH8Ucf/E3EiszPtY1zaXk9u6SB6IY75UVXSba8OTGFDqkxqVbR+hoaCUput 293 | rDNfegmwe0ZKRB9E6Iznp80IbFfnvluBVa29kBEEKlgd05Jhi6YkbffBT5bWTu3x 294 | yZjEmqnvljsU8a3Ij9BaMmScWEDPjbo0FE5TMZgHUsOQBwMIVSB5ra3kxGSh6Zcf 295 | fOIUmYois3bE1K+/wHJ3Q3HWPSjdv6d2X9dcupz5WLL+E6A104kCHAQQAQIABgUC 296 | U8FM+QAKCRB4VAVOzv4Z5HH3D/9/lb9giwpUQn6YD0y46Bt9T+NuUcUy5sdB4B/l 297 | C2kCPA9WJq8eo/lFFuZpBTbcdR5BfHm3sx/sIuD60TieVDXSdKVuHIDGQh5T1Nro 298 | dXf0xykJ1TmgZarAyMjgGXptbFLSX5GLDmU51G28kuAkmJH/R03z30N01nj0tIBI 299 | Y9s1eK+ADzDyq3wH3O+tQlrt9yGNEqmC8A1j0Hs3edKRiQyWJwViYsQK4CUCuzwp 300 | A+oUbJZ1z1v1Y/FagabYjTucmRgCp/FD1IOS3jHl01NtUIfSkG0BwBjlsW6VBVZ6 301 | J96VT5rOyW6wQOSOFPUN3pgaIhYFfgES0BXAXoUwQzgdzRzftZymgNGRu0Ox5KUx 302 | 9aKYaWwvauuzb0Lw4IoZTFx8GURfhMCgWn6NSLIF8MfJP9CbvujfovD5W5wffMk6 303 | cYKNq54/vVeR5H6hhld97PQIqPefZjTOoDq08FWby/w838sjl73VJfZyFjOrLms8 304 | TusFkSLY/b1Kg4Kv28iel+Ufa18goqCocHus7VNvN4YKTQGOypL0w8j6SvlvK7tr 305 | H2NCBDVLU+sN6RxlVZKKhqMeXZHDvX7/jpNHhjiyZ6XqxXLxnXeFf5hiyh/k0irJ 306 | 93yT7PvTB/FzCnKejQ25It2n3+bzw349vp4cC1xulk/ZfSD5gMXmsOUMZpDQ1r/9 307 | s1OERYkCHAQQAQoABgUCU4BMBAAKCRAWINxaxqB9nLq0EACigGQ1GzxUgMkTBZa9 308 | 0xQGI8z4B8+PrXUoMBRml4x29W9GfTCSgZKo6IkzqOsrEzsxXjlbqpebRb+ZVEda 309 | HByR7SF+5AEby65WgDAFT7Bvn/Rbe4zYNgdBN7qJGR1Dgl3b1/DuSjTBY4k/Gq2G 310 | 4sNYboACa0NSjCiL9xLE+WX+gJ8FyFDfHiOIVI2ayapsdY44Si2pt0i7hfGDKQCA 311 | BcBW/zrrUKEVFOwkM1W+v9QeRQiGHUlhB7+bU+nYLhclAtqY8SH+zsc+Kp7T5OBw 312 | yba+LDgY+OnDVLFu1669t8Kb2mwkFmHBkHOICtdmwfbspXiKOdlKA6o6i3XW4Qw7 313 | 9uhrsiVbtZpSUeqFuhGLUS2S2/HKfvafvb1rS26eAHsl9zRrWOYsmZBmQo+2pLNQ 314 | 78aTXXHVNrt0KeCAWcp3lb1WGo/lDMv461V+rimLylBFusR7EeoPQyBlBSvHXsWH 315 | ZER0Odrnk+1vXAOlfI8zBPAhPGArUyccPyEDNZh23B5K8dYjV899zn9qgaLqjH9r 316 | w18gL3f4pc3GvncDsqEhrptrZ6Q9jJwkTq36OHgngDm+G2eOoRGss6+kTbZrVIJ6 317 | 05ldIiMQ5MUsxl341lrddR9lvR+W4GjxvHRKinMRS2DzpwiyX75mJ+IYcu9jCqnS 318 | P+Pw5Rx2td4Abi/tnJtaUy4JbYkCHAQQAQoABgUCU4C3tAAKCRC3YYg7RCi9wBE6 319 | D/95FduHScmAnKs1oNjVix1AApHlwhji5ikqFVVd6Bc7tTp2fSknYacFNDPm9ffR 320 | gFDOEOKOnCHk56i3f6ZX1nTQ5hLasPE+4chiVgB5H9J+HNZzYBN0BVuK4vMz3lj2 321 | id/pw5rOxqSG2HC4yyzQs0gHLaOvKb2iq5+hEOVDrm/e4OdNFY1pXEu6n11pYDHC 322 | ry1S1DRwYFUsU8oIUA5EMIUZdSGQfi0jNadah4FmGXXjLuw18ytpuYbbHB43L/gZ 323 | VcUVwjxX+s4e2SCp2maFiolgI6ds18vVZ7WCew6WzpmLpB+z1srPW9umoDFGvoh8 324 | pQT5coowtnbxBLufpsqjwWZOtE/jp7a06eDz16V+dE4MpW2mzNIJcaByQbz7YMjl 325 | uUDOFDHZ9VgF96IVvvcueVsjFlj11p60JfbGe/UMii5qDyRPLu6XDlwaQSeTby4I 326 | Uf8EW9OAz14y60b6hOVfpj6SGBRaxlw/cF4Y1rIDCFQuqMRh+eSyEtmYC7aNTCex 327 | 3zBD1hus5MfzSBrLNV8W3e2TjL1BYnmNpe81llQ7NWgAN8nXOv7QNnpI720VozpC 328 | GwNnLZnRqqOgn6oqmbA4aKg7PsWOrSdCJDnpOU0QDBmzdxqTvdp9yDuQS6WfJs6I 329 | uPbqAzYlZWZQy1YlnJRE7Zq/Qn72r2F7ouArT2yLIpOLrYkCHAQQAQoABgUCU4Eg 330 | MAAKCRBdcNLrytLJ5rlHD/9ZFsn6AKiLdQxWPjnfry+R2NSDChutrfXN0033+5Xv 331 | kLThu377tCBxWR6bIomLpjr4UgwQaNAX8t2gxxdd7pfoXE3w87hnb2wzaJmvhjun 332 | HFtGaxYw93kla1JzvZ09drE6q1pefvxssHLh/IbXwOqS+tBoJLcpqXDG4v5b07RT 333 | VtQ3H6ONt3/W2HRJDe9fj9VH0+feG2xlEHJSLoHgix7BivxiDfbQKATqWum/fFNv 334 | HB8bOnqFmk0btX4QFvTAj+Cbo+3eDr3zwO6PVyEa0M3ChYnKZkYtFUXu8weG7WyD 335 | InvI4TK1JtZns9dz0lQfCwd/24r8bQ4KmAcvgfVdnTUI2BO/mk9IPCVZqF6/Fncn 336 | z9fMA/aK1lKMKQQY+EfkYKUf0vEHzJWSTHxyJAIUgGCMGgHCeHW6GjRgBLSrEu2n 337 | h/+i1FBiFLlHkyZhUp9KO79IQ9D1Bnemd9/7+SUeH+XrGmcGXd/Eko4+5Tm7c3YJ 338 | EC+bAne94Ey4WZuddQ4zWrJ5SaUTqingfS0AlDjeOt71+kFi1x7Q+9oGhuBvEkSF 339 | FB47e73fVKFVMKqFdjeWUYaA5oPi2lKZx89c3W5lWaxOlhwQ6sQdSdwtPR0G1fNt 340 | hCQFvwkQ6zfWNH4bnFjd0xUOmRvlF1ElnCYO88clGAdLTjDVCzbwvl65ImoZrcbK 341 | VokCHAQQAQoABgUCU6SwOQAKCRB0N3+fakeRn9dvD/4gU5OqbyWqnvte81d89Rt1 342 | lclLUDnTJFabQbjLRyMpGWbgVEJk2F6bUB/rfuHWuqTBa8XLKruyWQL3pZM+PctM 343 | yrdHGKSorxv/O6ggBEf8dxNuBaDJFVpa7DeSd0k099El0mci/pVRClOc7qoLStsI 344 | 7LZ9sU+E7oUDmdwg0lsY1gY26nJeDyTp4c0pUSS9vJKtGcfErpMVcE6SWqyCki9n 345 | T4r8u02a5UnTzu7HSCp2jjx53pFWhd+f0n0wpv7H52mXAqG0GXeLCYo/sYHPxwyS 346 | XH7EToUVCvQb5Qc3CQwqIZc9xZzsil42n5pO51X3MKkTJYV9q7DtGm0ECscZ1c6F 347 | BkgX+kqUat6tYNkkcuwAXtmJ5wpfnKvWnMJh+0tLcxhjS8HYxAB1AP9R3VavfOJK 348 | sdnlIkgidb8SLh0d+nDUGHcqZZ8a9Pm5/WG/8IIRehPvs/MZF+lsSk/6Flfxk6i/ 349 | o3B9nnzjpLEfDH45k5J3EbBEm4tV/8QLehZ/Yb/qiVGrOzEpCgpIjoQM+2UcWTLt 350 | kHfVYf/4uoT+6rPGjDaPv6V5WMCWCWBrj6NKFPzYVpu8kzPjA63QWQ2dBLz/rddU 351 | f8jKx5PmhV6hKk2gflMPy2mhzFr/mAwfJn0VBNI2xYqblqEreeRJXpkmtfJ50XIA 352 | U2xS/lPDZtiBmwxnqk6Bp4heBBARCAAGBQJT3mfTAAoJEE6lFOW0GuaoRWcBAKFk 353 | 1zDjEEse/OFnDB17fDhHkHThhDkh5LDiblocifQgAQCgZHhleE8Xq2NmD6niOlf0 354 | gX8x6szHoLdugAyKYdnRu4hhBDARCAAJBQJT3mqGAh0AAAoJEE6lFOW0Guaohp4A 355 | /3bNyCUtwW18uXc0u7wmU2GRhavsM1ajAlaOFVwWQ2StAQClg7vDApLU3VlKndh9 356 | pZ0t8OMTAx3acQeWhFYNpIyv6YkCHAQQAQIABgUCU+qnNwAKCRA6L9iUeafEwX2R 357 | D/0YMOSJsHIrPoiFVSFu69w8lvgPfvSQCPJrkoVPmdc5YiJiMGp8DVp+UW3JmOLK 358 | IUPUg5p2/C+8DLgjWLV0f53srOCdqp9qXBx/0yKOtvRNGlTEYywVPA6JOeNzjcdg 359 | UgBrkT8lw3Ij85+eJDVV6QFuTSPmeUp4hEESeNKPWKT0B3Ixl5zbVHO6Qfa9NibC 360 | KpOll9YkswJdynteFMkpVm+Lq5mpr6Jpbn1WDrRncXp4jdZYG6yWPwQm9m/2Ua9I 361 | Lqb9xBBKf7lNkywVbku8hmzZX/vYGZPGVZddex1QCwp6UNdUMaHUGhh/B7kf0BHs 362 | eGPNNg8sxLE9RZ85vHmXKmQfUDvKY3Kzk1N8gogf+78KXh8pi5KIKzIq0GsUCujl 363 | JxIWDTro/Q3re3CT8M3op3qx2gjZbpsSmweoJtMNUfLY6hx5M3I6faxKB9VA3/db 364 | oBwsXr4UddQs+GUsBW5MevrFK9R4CuHwpLSpZBXD/GnQ0p3M/Ddm7Wy5lmHwUimS 365 | tc+hkrSKrsEy8ixa5sV0hq7Ii2hE1xdEtFSOCLgoIIIAzp+N6MaqCEkmjCUz6//7 366 | 4Wy9/O8MF2ytu9cAu1lQEJrJa2YSJk8y28Y07y9i9fzQkkQSVympUVfRws2YBmqv 367 | uyxcM9D0HnIkivoo6ka5kCiMsYQ1Y3F5uDlOi6yBc6AM54kBPAQTAQIAJgIbAwYL 368 | CQgHAwIEFQIIAwQWAgMBAh4BAheABQJUA0a8BQkUqY9HAAoJEO6MvJ6Ibd2Jz8cI 369 | AKfXu8kXq9b9RqMsK632pt2n1jcuxtGyOYH/fFj64ZIHN3GqVVQ6TnvOzmnns3iA 370 | j+nbkxPEuWLq8MfpW3Aj2aewqOLsowHSI1RwIcBhoacxt+GPGenmwneM9ABJTRqQ 371 | 0KTLSqaS5wkUcJJ7r6SgSJ+LMQ4LKHyIOr6OIvJy+ZqyM4Q6X21vTSvZVeCr5rwe 372 | E/l+Wc3U5ENMmtWh7RnTGk7SpjjFZP+HHhkQ8OuaZZRhKOGUBIBlWd05jR4nYrko 373 | RqolRG0gxkRRFTlIhfcr0fruof/YqlC8TqADn2DLhrWrY62TOOnfA0djtaNNJ2xh 374 | 1mGkFaophnedlqwiYIQCDMWIRgQTEQIABgUCUlK0hAAKCRApDBJJvdhwC4JGAKC/ 375 | R3s/Zi7VHomLL9u00/Xy+JhPkQCghjUtzjtJgVQwDsXDIUVfpZIBvliIXgQQEQgA 376 | BgUCVWILXwAKCRB9fRG/Yp1aZ3qxAQCdMCLlkZSqrRLQijlRG6CzA6v9HAQWHxs7 377 | uck5RY5w2QD+KzcuYYi+ZhLuRiahhGNKPcFzS8yd28PpDYpiOncvVwOJARwEEAEC 378 | AAYFAlBbsukACgkQLJrFl69P+H9BSQf/Sv1aGS7wJKz7/Yi54t7hVmwxQuVEpvAy 379 | 6/m6e/ikLRFInWe1kNiLlOcs5sjUgqQtoAlkpvw35klIwmNtR8jRVZDsvwu0E1U5 380 | XIJ0icQEsf4n0N81rYOlwrQuzDNOY0p4a7jpLFAwMhNwrBreF4ebz3ZF9yquxmWu 381 | CoJHE3iA+J/FaMzmGdNVxMpQXUPOjdX1hNH2e1BBGwbUqpSlqI8qfjEVuYjZTs0u 382 | 7xaHN9e6DaqwRoI9zcv143yY1FrRJuWFBLCsdogFxDDUKk2VwLSFw45dmZRTABD8 383 | ew0Y7kkwHTmsEcVg8PM6XAVcVOT04+kVZQJ0so2Cd2sL041JreDaDokBHAQQAQIA 384 | BgUCVcQyrgAKCRDHXurc0X7YRErCB/4uDl6B5/rymPi/3AK3LMyJbLqZZzErK917 385 | s491J+zelFywOoUEWdH+xvUzEOonioTvKkGrQ5Tooy3+7cHojW2qSauLh+rG+b+7 386 | 3TZJyRSYDD4nwWz3/Wlg21BLinQioaNTgj0pb5Hm70NwQwUcFtvyJNw/LJ9mfQax 387 | t//OFSF2TRpBMr5MMhs5vd85G5hGHydZw9v0sLRglk5IzkcxNdkuWEG+MpCNBTJs 388 | 3rkSzCmYSczS1aand3l/3KAwtkau/ru9wtBftrqsbLJZ8Nmv6Ud44nKTF0dsj5hZ 389 | aLrGbL5oeMfkEuYEZYSXl0CMtIg0wA9OCvk3ZjutMy0+8calRF87iQEcBBABAgAG 390 | BQJWc8vRAAoJELPrw2Cr+RQDqw4H/2Oj/o3ApVt42KmxOXC5McuaaINf3BrTwK0H 391 | DzIP+PSmRd3APVVku0Xv89obY/7l4YakI2UTzyvx5hvjRTM5jEOqm4bd0E1atLo5 392 | UIzGtSdgTnPeAbH07beW4UHSG1FCWw35CwYtdyXm9qri9ppWlPKmHc91PIwGJTfS 393 | oIfWUT6MnCSaPjCed3peTXj4FpW1JeOjDtE3yR8gvmIdIfrI4a8Y6CGYAUIdVWaw 394 | NifLahEZjYS2rFcGCssjBSaWR25McL7m8lb/ChpoqpvQry3MaJXoeOFE7X1zInPd 395 | a9vDdWR4QFrLDN8JjxzBzwsQcfaA+ypv95SlD3qL6vFpHGHZ4/6JARwEEAECAAYF 396 | AlZ1TPMACgkQGMawXRQNVOhCaQf/aQZ0xEVW+iBuqXzd65axP3yWS9dM//h9psP/ 397 | UKhFzfxCdn3XzmJ92J0sv22DjR8AbbGLP/H9CeZY8nCQnYOHp+GQikGJNjzyd1Zn 398 | i+Ph67EYfEV2eqRO55GGmiRtUrZaur2pfnbNsvTQtA2rGXen5tLSsCh4qDNHrM1T 399 | lP9MSV0clzoVWRrRNvkODrSDaCdEEDrOqfy0AEFlLmBTqSsduo4cO46j0ruC0Svf 400 | lYx+2HN3rVtZzt1wrhaPBPnV6gP7dhKp9XM4erWV40dP14YyDExZoKNys7Kq7pnR 401 | QMbE3HL6UGa8VPvu9eiELs7kw01pYBtYl1my9ekminj8cygpdYkBHAQQAQgABgUC 402 | VolllwAKCRAjRRsQeqA5QYnjB/9oDZYh20qEpGIZRSmur8M/cGFKJ6IMxBHFIz73 403 | PM+hHB3v28aYRW0lXGu8BNGZVxkTuTjd1HlSFMCNpcNfbMmRhEGtEp3qGq+cq7zu 404 | 72lVEiY8tJliq9zyOm+guFzUQ00pvaXuTUFlshvwlRS+GIGn8U2P/SVRGqSOqCki 405 | dp4f06yElt5QifwzvHT8KvxjPgFA5NfQAXE5i/IoepV53XDhECqOvsORbc0JT8n8 406 | /4hT8qHTno8UNbYK5BQjHlby92v7ZFVgI86Li2zb0HgQSmvpU/qRibSzg0gEUrWw 407 | UR4knTkoKYQwjry2bQ653oNgv0OsnSGEroYOyQ1Q96jOMFKViQEcBBABCAAGBQJW 408 | xLxwAAoJENnYUJL2kkSzPbcH/jl1mYhR4f25pRe1InyR7BJF83YDhJYIhbBCGqGV 409 | enFEy29hco832HkhMUukaos34KZjsWGDFX1IWe6cxOJvBZsDYHuaLCueh5I8/Tmt 410 | q+HuebuF0RJtJh7ItJoCrEv7ZyUQmbJ+aHLx2pXSqYUIiWlPvIlG2/esQlUo7pOu 411 | b7eEb8U3oKWYgs9HkytMeHSTKiuFJ7mzEyh2fLcgsc2q1XT4VxuqksWxYv8MstTO 412 | xrltQ7LyP2QH/BzfqI5yE3UfSSg1sZE2Nh2cIFNWTYVxdx1fBJWGtTT7l2o99mYw 413 | ufSLz1UTbGF5PcXeK3sYxN5IJta2FUByaJAWPJonRnojinyJARwEEAEKAAYFAlaU 414 | NeYACgkQhKVEYnRGm/7r8AgAkY8sPCR4JKQEgbCSDky2uVzc82QaxfaFvYY/oJSI 415 | 54X9QBhT0dzEu/racr/apjyj3pdjkP8IM5Mya9+v9LZKLKne7pJUNsSiPUpfudPM 416 | i19Z2TW3+7F8LT53XNALS3Ink78MdAENpuxn1ERkOoqOFOKaKUUhaW4ai/cd1prz 417 | GQSKP1/TlERqs4E2+JphTGjL2LlV+jpSHyMD1dpfD6ZLlEiuyxr8qUV+HTbBcfnG 418 | UTEd56mjiDv2cUP6WacTlP0+F+NGcG2iAJXdkF6EClLyEnN70l8ud7HuXUMZI+nr 419 | J0jKqhYduTxViI8w98cxKVelp66mt+rzF0GGoxPZroWn4okBHAQSAQIABgUCVJqR 420 | gwAKCRCUBGkMLONkDHgUB/0Y/e+si9l1mKwOpw6hGYqXyJaRjlfeWbF7kFpDiqND 421 | ppS/Gyimos3gRMtNunygf1zexPKyFADQEy10kWy39mOEMT2lT3Qp6X0IxsSCrQjk 422 | UTkD7fjw6+aht7RNQ+fZYKXDJEY8J7hfRYwSKQQezcFvUIXNh9tsh7Q3Uz8OqNS9 423 | 8q/SVzfbk/uLYOVsO5SguY0yAcfHr6MWqzGU0KhuSr4iuEovG/bv8rfXdQ7MQKI9 424 | EhsyEeYsdCJz0x4mnRvMmJOjWJxBVGeKblmi9yldbamIlBparH9NRcZpF0KNiskk 425 | lk5siLqqdIHtKN3HAlSroa5MRv8EkSVAWeOzHJK9O7bhiQIcBBABAgAGBQJUOeCY 426 | AAoJENFZiZ/T2fiy0AcP/i7qIAAFw6wqYgojDsqA7/YifGh9RGvrxmC4dWdrgLxW 427 | 7dorUh0uw/JLn0JRrzKoS6EF3hHrPQasmCPyz9ckZeRZjIhR5mKYtqrWsF3vpaL2 428 | VALXsb54KqAR8l4/iT083JTm1mvEbMJ4JFVGNrGNVIWYdDgfQOKzD6lZtwRZTEjY 429 | 5u+sJHS4VRvjAju82vlmEx8hmrcDV2f+9St40pThNR9o1Rcna562NFldsccL7fFL 430 | 9uM7kmFMGid5JwaRU4b/iXiSZ6YctNQyfitkOWoHG0aKXvJM39WsJulHKCekSi4z 431 | 4nNd5hZgMRFG2L4fzgcm6wNEh081yhsVN4xHxURT1DrMg3Xtd3Zj4wBL5XFHySlu 432 | dRCd/PYPRpvfcCweJJ/OTroepfr3DGw/Qo2VnZKe+Hu+4KpZnB5NrYIz5mMcysJM 433 | DCXiA9YdwRlF7EsP/ma8FdYpxyrR61+GRY+ANUP1KMqautJj9qW7HtIbqaZUFAuh 434 | mD6uetcCraWD7EF7meaFJuozenO9fBzBgcpJiJWKjNElJxpaPXiWPC+dQVvK0jpy 435 | 12U1UNp38PBs18M9w2eOsC70tVhko53rCr1clL5Tdb133jNWo+jyWmKcYFKARziG 436 | Q3Q3GTE8ycRwebZeSgIHYLzm9zHGZQc9crpC0Mfoa09vcbBNyt5NRT6s/nOE4tjT 437 | iQIcBBABAgAGBQJUOiR+AAoJEJo0q5orsokP9bYQALApojYAycnlIEF8GVnt0fbz 438 | SYLwGBxWuMMmzdiH3HHvTxsUBQ2KvcBRrvSC1C8gOhpYdouI+RSXPXb6pkBHWJPF 439 | mGaPp0RKqgLMDi+wK7zZiPESMK8vaYJS9RmLS2KzJMn30QYQ0VZfrJiw+K5ejSgd 440 | oFz3pOpcJCNlBmNjMocA6M+u6O1PDb/OOqSPRqSlzZzu1S5HyDaOK32XXZj20G7l 441 | twn5abtdk9KO8KWR2b3ZT6GMzxx3L83lBL6hcg7a6NrYQKsXdUP/HEvt6pnVBBKT 442 | k6LzjRNAPp79a2w4muT0rMAfHdGzRhe77828KTlTllQXFBEKH6m23daQAHEw1ydB 443 | /9H+rG+S0ulP1V2Igza9agB9XASIgRKLjwkDdMzOehf0oKt0U6P6kpytS3M025t9 444 | yVA2qUuG6A5DWwwfuRrY+dxUdbF5ZoQYEJuXDLk7vVuh2ggJcnfGZ3fIHjtCwvdl 445 | MRQzDX2adpzoNy7uxZHz0QBbaSOeFhGs2xE1/lLfpRaWw+ISXdp7b9HjB6dI6bSf 446 | YUP940Mi72d62HUHwbWNkaWe4afeCAWbTuHWCe4jnPvTBF0t6mU4k+lwWo0uYYjJ 447 | M2W4V0OGSflIdB8sgOxgmFzlB72TIwwVBeLrCUEvymHqbTUedY4jUSWrL15sfDjx 448 | AhGJxZiHe4ydqxz6p29jiQIcBBABAgAGBQJUZxhJAAoJEM2XTJo5TWM/ICcQAI55 449 | 55kQLg4N5+fmq1rN6AwjrI4lW13IjX3H462PMvVWCHgJV86o+5/ab747czA0xbsz 450 | W8vr/K0iayA6hfwRVtuEXfQl0Uh/Taj4+fhI8cfW2+5EX4+lpGrOclVCsHHVfVZ/ 451 | k8LL7mbjboJhG9xjSFf6JBtqr+/AFsEIA+MYGFBaiLgL68j3CJuDPvjkwpC/Ofov 452 | 5FRdPEOWQ9odC0z2yvDjAqxOkmDjjZ04FJ5PBnNbo67AOUk25shqHuBzVH94MAP7 453 | Hrg7UaFeRQiMgNElf8qsTzukyzCFPxJ4yyFpb56dDil8wxsvGcJlOEfT8sAi3YT2 454 | J2QoT7KAcES+aYgP1Q2Uj3gv0MkaLNcDtPsQGksbxXoipq/Wygj2UwOQh9ZVtycj 455 | uv0D2LyfPMVTPVG66DYUpaverd5QB2nT2LZLxXhOH0tIqmFUaoIFrvrLn25A0Z5Q 456 | Fy/HbPfWAw7PJvgjl6AoxT3nKvozt0tUdZ2DfE3h4zjBXDiv3Y014FmhgqwEOgnC 457 | n89SR/7SHMJsMKp8oyn1mfzsncs+gqcpOhvj2XfPEpnObDLqg98J6eyFGDfhEv1b 458 | NEOB4IcFF8YrUNEu6/rS+l7rNH7vlw7hVWE0D1EnpZ8KYk8qPlOuHDHLMgemECUb 459 | R7Ogt63H3jqFfDAhlKBUY3hG5S7lpWiLzcQccYZciQIcBBABAgAGBQJUa/DbAAoJ 460 | EFyzYeVS+w0Q16QP/10IdfE8aurLIfVMURxzr0CWHBwuAGV6mCKAriYRaEEjMWFT 461 | hYsRtCS/CGtdc9BxXU5GwuHFcHFuBCP425I9kxmxh/Rc+w8A/ZZAVU5A4gaSB0hk 462 | M5oZdB2QwYmXrECESdt0iHxcz9/zyB1R4q2KryzbbkJNJJzbOrGpxG6vh6Dk4B9r 463 | FJeRYc7lVfH3TqiOHCljlHBdEw9iQDGl6IFuQxUqOJNJK75p+4/f0eK64W1jXI2b 464 | GekTAQ3V1mA9xv6P+SR+NjPg4WQlx6sTyksaxbkzOcchyx8zzm1DNH9wm4NsoZKM 465 | E4n0sCIB7CdY7oBSFxJfyRp1JSPrUwdNIX8kSsdgJpM7ORgZkojfWWCqt6unlgRs 466 | ZmurFYigzZFWBAGReHIeHJ54eULpg2QPKnwwWuwYHdEPp/bbuaLcPQcklPOGnnQy 467 | nBpUvu3Ud/Fr7+4TMHmOI/e5EUUyKbmK0pJLP36Lp3i28bHUTALF2mrDlx3+oMRj 468 | F5iSySC41KikBSBipRx0WO3jFzdS6NLVdjNlxG9lpiHCkc7bHz9edMvuAnahK/Eb 469 | S6hFUEkWQOJtJKc8B8hXJmChM2YxtEDVv0GngAAwcHZAvphFeuy9vYf2S5IbIqKM 470 | NrKgq4VQ+jTqHHXI57LkGHDCY2igDHQGo/StbI4s8Ow5btQMdXPnAO4rZ61FiQIc 471 | BBABAgAGBQJUcelGAAoJEJjdu04iyiyDqF0QAJUdUtSUzHV3Vo36pbamTnCtyOqE 472 | p2X5L5wCjh+UAw9KGeZu7Jiiz7ueQqxKQtz0miLnb2i3NeK9EWdoaKrM1+PIym7H 473 | 40ATaurleKD9sq49b859tz5iy6DLh1YPeeeuQV/NbjJyh06SzNkMjke6S34CcpDa 474 | 1OoczVsI1RufWVMuq1C94+PZD0yCCVLjMUD53c0AldgsFXdd2oEU/JPd7P9wCYSK 475 | V/+9F+wRa7/U77HRKNHd2FCshmJ1mbhk3BFHTALFn9ld1/mqtjUTArt14wxs5Gxs 476 | Pkr1YsWQ1A8uVUtnW3rsn0UnP9bFcAfn3/d382HhuyW+HOV4g5JhKVlG/hBbvdL+ 477 | HV17Y+YksGeQW1sKIqmjvr7ArFhCIUYo4+emyDEjQmTfuv8RRO1u4yR0iAZqlkk8 478 | /8z53ewE3HEfepwxuo6el/uuRuXfQOmWfdNENjd9xn5gzIDbwqwvtZExjN2Polbi 479 | aSLP/3pI8prtrOYuW+Mk5o6iucceazwdPyevOhoMuW5gZFffKo9w6TU5SRGcYIhr 480 | TJY8C7h2Yumsmir/XXpLaadcBp2R4uDEoHb6eGlXqvSYMED/mu1fw2VOuKosddCp 481 | f/JkwXHwwB39z+dXo3HYSofyec1mb3kcAsOUbTkAh86IWN1ymqcNTyytK8AEwOLH 482 | Q1f4o0ml7n9Xzf1HiQIcBBABAgAGBQJUsRPJAAoJEBe/lIwEdhN9Z5MP/3Oo8Oc7 483 | 67lRFi1Oj5FVoHvRxfZvX3oKrG3jphPlCBgKWK8xR7c5YECNIwnlQ8uCqUgxpFf8 484 | /iPV3xVuO1HFwDnafokTqyNtKz2XgpmyfteV/02e32hsDNGfaDCkqbUC2hkuDfWW 485 | Za/g0tWfSCryZaI6OkoD8UHSiYeDwVzLQXgGsR08iFP9xiHyQHNtCpy0HHeOutrj 486 | iWibADwEMZ6n9/1DSqTQkxnxBwIHpGqK1M06QQT6ty2Bbm16gru0N6ulMr3Dc516 487 | PdOzQzqo0T7c2BzS4wOydYE7UGEeRzuzA7Q57dVK+P0DLtqhiblJuyxBgMLxKICg 488 | EeR6ScjWQpHW19bCwfmbHIqHeeNCZCirF17KEtPqFCv5k5uzsqPvRv9yVwjo1/LF 489 | +k1iFgRez41AvGlNB+VrzziRK0YvdfS5wtQ1I/a9m2g+oyWPj6c3p57CrqxaSiGa 490 | +FOHOxUx+rQk2AdB8l4xtG3HNuiwjEy75CbKsHwIBRd/9kRrGcilb16/osU/c/jr 491 | 4QopKU9HKhb0DIclpY8B/ZMdYV3uG+oy0aLlld10GJ4SHW0x1uB/rZU5zireTudO 492 | b+12qMfF6AyVV/tsAq4pELEVFD4INWxgh4EuzDAkJCvt6r7XfmojXTFR3vv9fHCc 493 | 8vAVwRdbxK1NKn4BmMUVlSwZwLyy1roeLveCiQIcBBABAgAGBQJW5/QxAAoJEPvq 494 | MRCoU3iU3SkP+wRdT8z3EczONAcvJsu7ZHgh1ggzsmozTciSuaAZRfvFmUyB9h63 495 | cKNTS86CIrqHmMZrtHRu9llkNNiE4Nj8JAAsMPSR4YaKHfHxc3bOH0iWtcPxtIiQ 496 | EwYs/7oP0/YzFAxcUmZBDeLvy7aKpFqdPUcEhMTWmscVajjJXv+6G8IZwYGFAFvS 497 | kYSimZP102gmgKQhcfPDqmlqy78Ft+T5MfIha1Q950iZyAM3j46lVWMkBaKPQKq1 498 | G3kKaL7Sy3o75y4N7lgzY5WfYnBYVAU8eUjv408FoFKAYFTsA3RG7P2VROoNefPa 499 | LRSgEgZPR6efVux9Z3R4zOUQuljvq8r00zMS0t5RVcDp1gCNZQ9xv2QeN/ZDld0U 500 | 0IbDQRrlT15+l3SthkXapMMvbSVKEILMgaL+ysl7raMW/Zqv1KN2ByVJsPjWnwWC 501 | Pnn0fMFWr15ExzfZBUNh2rZlQ56jBsJanHF69Th0vI7JNm7/Gd5FRWL8RcXzAL/U 502 | bVDuyGaO2JPztQ2dL1lnHVL5mgOMjs90YpADenNR5XkQxuazTRiQIOXfoZhgPwe9 503 | 9S9vEdYM6UPYZjt8uo1bmFEkV0CGjWngJc2ySSurftXPFJ7gzFhDbx70Ga/1lw/4 504 | H2RPs9ZiZKKTtiGcDLhDxSuX5z3MgzzD3CNp7uKJQlTIg4aFeX9JWQvUiQIcBBAB 505 | CgAGBQJVfZS1AAoJEFuCGoE7lKfEYBsP+gOUOmmHg0c09v/iPkel7JJGcNnipk4z 506 | 8xl5nTxXay4nTY6TKtelOhQUBqDHBqdOe8PNWVutXqSDQKyzRPvXJRYgF2i3IUHq 507 | /GtCK2yPaGV7XnYfEvddXmjAlYS9LkHcYH7zp7vLMW/8HgZ0JjeHAfmNF5+Q62rk 508 | DUMVBnSRVlA+1mc3/o1O5p/Kn1Tt47kCkLJUMNyBxXl9BnbqJtFWKzoqgMovr2QE 509 | IZeUQzlJKygexnU4tCP5q5VefVqaVnEHkluXJq9knYK/G3c2Pet/GEDe5Fkukzou 510 | QvcqGaujjvc/pmT7VISkeO4YXvmfctOpggJ9J/ohxg4RgvqaRYdGoFgnNQMEnFLI 511 | xd5+8Sb48mskS59rVwwOllWsbR+6T/ZDW8FYmpNzzuK7Af/JoOcWy7/j0fwOhJa4 512 | qX5aKgph5S/rE9pvhmhbkgZta5m8GQ9bHInQnbefud5axRtSyx4cG1ZB/mRLFD7+ 513 | kkVfW/KrtdP/7PuuYtIP/nEhs9HnwOmcoRI1WpDGERC6eUc+Dgc5sFD16tvp+2PW 514 | 8/EBAWQK55b9jZ4Uws0D/3Tn8BE0CP1lJCZzIzKqbO4+VhWNq0eJgwZWTUNoXQuF 515 | P1gOhJT+yqtxBRBP9YAOg+bO5kdjqS9IinbbYoaMkY8rUmqrF5r5XNob9mJzgF52 516 | 2npjWOx4P+7KiQIcBBIBAgAGBQJUyWhmAAoJEIHFzE+IMpocFMoP/RJWptx2l2qa 517 | aJW1r5p1F1wSYHFgkUPWgS2mNwcgkFgGm0+QhPXiNAw7evt6aTMLMatewzq3i34W 518 | 9rIaNj1UNs7VFYEVzYzWrAGlBiMgkmvHpmMmNIoH5sOc6D8pzxagOalvHjHXXabR 519 | Ch6r8C6FX2jpQmwYVT/lF10ARGoQMW59MGFhUcEPfGVTFWgSEj5hgKvLhvDYj3Lq 520 | LreSsiKuVU7yU+K5kMY7q7wT+8jGt5zdoV/99OjbJOo/a7gmIDHGeuJnSuNRRV3D 521 | ltaRyk0N2FQcoB96q53++BdNXwDNTVA3eKVcrjpTXJcxMlpcmDvaF/KlIpctEDIA 522 | 50aTNlkLvRLMnPTlFMeoNyURSc38HO5c35chioH8zd+2Cs/QHGyI+JBlTZOOodUB 523 | 4alKB6SKHwMrWpy4+JfSxF+DUEW0VQwj/wXEpi+B3HKGYI0QNuzpEGZ1qvaq0Vi7 524 | SqlcyKbZuvUGBz/RdKeAFiSjmOOQUbm2cebmFQzYNr8KWPt42knV+PQMet92aaNV 525 | WhgPp7Z/OcvpUABQZBPchJvBRr+Qso+uqQvLRvlXGD+rRni1/NZxgnVh1cHN7CiF 526 | IJOlE+bBozJ+xtDx5ZOAlH5qWJ/bm19zQDnufWxocqNv3ek8DuM2iyOmvpbi1REi 527 | 4ASbhDjMQDFmRNYx+3bIi80KJEnC2kZViQIcBBMBAgAGBQJWOIXXAAoJEE8/UHhs 528 | QB3OlqIP/3lofZqqiV+uoiTdV91Tjmij9Rioz0kohpQsm/tau6JKXItjG7DaG3XP 529 | L6NPckNGI+twD393Hdb/VkqatbpxLeJUQLoCjV3M02p6zDJHQ5wPiXgC/8HZVdcP 530 | 2jlvnrkg4N5dpLJJK4wpZ/KXMsw/SrBj047ZnySIl5qw9ytXrQm58R7FBB/ANjEN 531 | vo9C3LEsaDAKv0TL4vyMpz52TjUfgoz68g31Sl6KKOw1HG+dUB69M7MARSVEgaWU 532 | Om33eM12QQtCTndJQDg+LeYjfvfHbcnMZnniCZR7rHGxAhBzgKQqJU/JizfZ4FDc 533 | BkABhsUQgkSeg3llFVzSU1iofT37A5cbQr0xUShPQwKgkESryuyL059neVsAhDY/ 534 | hFeyWCKtVQ12i3H7cvzRlfYxD8c/mN5TDiC70Cft1pcLU++u/6Ga1kuzA7rkfoUo 535 | crCSjqb9FwLBokWcwbi7SyA8YD5m7W8sPINx7reokK7mvDsbOxpBp/y/yT5ZpTjK 536 | 3/MNgESrq2N+Qg9EFC4Srlg8wzovn0zamzb2xDJpLfrV/t2DsFrVf2SWFd/YMjkl 537 | jOLQhbsEpQIdrfS8/hNGgfoUIiko8lqNi50sGQ7kO9kirmjCZaAuOaOi8U0K1C9R 538 | vVGTN3oGrxzRRXeqt2Z3bBqs5Lz5lrCNkerWZYXcItIyZ415i/FsiQEcBBABCAAG 539 | BQJX+0MfAAoJEKP/WnmwkYgkk6MH/iZu1O5/NwEeDK4jNXoRoPkH1/ZAd47BtTl4 540 | CkaRjyDkasSwJ4jBRkCj/6anoNl+d9B3Lao6VfgCxuALLP5DZ+HsbubHtirk4UDC 541 | iyu4e5H6gp6wvDm3gjO1+9J8vNG9ofu+PcVmbWoaU7kMFa4XAIpID30tp10inbmz 542 | sngR98tJE9swKJpdDDkLFG+shsnI3Z2xayr3yDSn7mbxfs9emDrt3mGdzTunRK1k 543 | OYk3nLjXtJ5599A/Pp1gOSXwsTQz33NHvOXZusSuhkz3WkHeYaRdeE3WGbuXk9+A 544 | VyXJi+YSejMzPjhZ+QiJ9l2uq+ofQDqeQtKNeUG+kl6VHWa1f9+JAhwEEAEIAAYF 545 | Alf7QtYACgkQAngh/3sc/sZqEBAAzF/c3Jpva37EmUVH79kK+oyrmszyKrrtkrl8 546 | sbTTRGMuIE3lt3oGCUCrTeXYO4Tdv2F2eiwp9TcUJ7KyK+fRp/STGMxof5b70lJA 547 | n0TkSM75GAgkOSfefpf+VCNWXc3tHoV5pZjpSD2lpIK0CVWXAJ+D+ufaMUiIdBv7 548 | 7jidAWlpfha43NlajLVI4aDfZ7rbh+OyCoHRofZyZjegZ0wW3wUa7M59rz0kZbw/ 549 | uZR5myJBBHFHjL4vuiZDrSuW94pl4Sj9lV9JlRW3Mz3CmVelQxsXr9e1QL12axWt 550 | Jl4+uwAeeONtuTQYEqK3ZSzALx8p0dXP1iJYq4zhAsRaK5xguRxZwdQXKnVOT1l5 551 | LdHfI8BILh5ZXvYhUZLSaOOiVwXBq0x9iCFDjb6xH4bp24RwlI3uyqt3NjFGfLtp 552 | jPsYVe/UYISLP8LOF6kcNE6m70pm/rF63I/jGZq6dqfPOt3uQzbfnfSMVErncYn/ 553 | inpeXBgDeM2zFoagAAM5MjCqiWDG292s3AR5fSk2kUjzkFdImu8HEqx4vijY2XHG 554 | +TKss8i65ToR+c6Ay27m/WOAuQDc43d4RHGXsMzUjZuoVPb4Wm+yZ7ooWbWjgN6m 555 | w7jAv1kqapQxmzoDF+ZSimJr3cS2xmzzTW801QGZKyHem8jJcZz+/e/Ysljbfqux 556 | /QOa2JyJBBwEEAEIAAYFAlgGbPAACgkQemOAneUSdiLOth/+LNI/VXkol7A+9Z3q 557 | dIdyqMA3zYqAq1RoV1Szxk5uqvVwuW7NziOBXr7hgx3JI3m+UlaLovFLCwWfZj4E 558 | 0eRGmGs4ji82V6+1nczLBXjoETFfWsNKPOi9VHvi4M5/CBenei8JrVwhlVO6IlQo 559 | bO4ik09EnB9EzujqqoVpMMARQtgn3Mo3YxhsgTUCC/A7iO8bQC02wFTyrIbjmhpm 560 | ICJDdr+kd+18qDgJPZh31m9rYVwFgaEQU8bQtKgf/5uKX1CohbqF6HJNIsNkbIFW 561 | l0A0EK8B/mPPaBYLV5bbSCwhINWo3NC2pZMhltTQP6ubI1a97nRj9u+stg/WD/Vl 562 | ICgxIUhx3iawGvjIV49fPM1b9xwxcaxosg21OrVpjCcYFoMQUgsDzwsMZz1L+F/U 563 | t2R/KD3ShXE+yFu+h9ZVIFx+tzd9Tt6f8ApHbw9McAL2jldouJgPqfZoK+yl3Pzd 564 | DgJSvF4QsINBGZmicNwzEvBgaxj5PubBby6FBhMrsd5oHn5S7yAaA8wGlZklehyL 565 | hN4C7/sZmisIGatfVJJYPP0h0NfbtfZ90o28aapZqwCA5R2vXg/oBre5pF9+D95K 566 | pdRXHZlITfeIgN4bT5uhfucw2CRyjWDUfLRkh+n4gpRiub5Wq8lqcrFP98v4tmyN 567 | lgufPe9QZNA1wSI2+/WlN4VNZXjf54O0AWdStM6EbZrakSBB/riY6mv4Mzch1aEV 568 | F0wNJSmSw1pWr1TEDGvUd1qDp4KBqaX53S0eONpykGHnpY5qfm51QowLlqmNQP4E 569 | htmDq2tiFTvIR85MJyUaE+BDIDOrmpi7w9xODXL74Tx4FGcL3SqPwB7jdUEb5ZqA 570 | CZVwTsb0pERTuXyN1S1vWxjz8wk5k3YUE/eLaXxIvgSbUkxB3/kd9CYhn259Hivp 571 | fuT2r6SieQe9wUOQdQ9LybKjKLfb5H77I58eq9yR3KbqhQcdfxV99P/1x89nWkv9 572 | Z/hES23rlsGK1oMDRiJyD/Tk8otA8Wffa2nkNwzLVPRm+TJd9JplA2u/RPO/79Cf 573 | qa2RU3Qwf0GSU4qARLR8REJ2KS6Nsg80j3s2Nj0OHp6k+QBPMo2Fi8Dde29SJNB9 574 | 9x7Gf+/QdtO/QtU8jV5a+jVO9ZnY5usRpYg9h6UOUlHwxtWL7Aw48oMy2nVMvDGF 575 | Gcx72EWoTXp9NX+i0Pz235Gxf3C4b498vQMR/COA2c0JcwiYK1FFKSDFOV4aFp9U 576 | XWeP1pyZh27iDDCO+ZX0Arrbt7y9rhwXEEd2O2FtIyGINa7QdHDJLcv75KX/obtf 577 | fzijp8DGS78uIVt+EnlyEdcrDn0d+XSTM8HMJW/yjNaeV9n4/jIHrMMpWefft1tu 578 | e5TFDokBHAQQAQgABgUCWCj2AQAKCRABFQplW72BAiXGCACSHG54fSeKZysDiX7y 579 | UnaUeDf2szdvegD+OPSVJQhcDdhyC/YnipEN4XFpeIkpxUrBXWYyy5B/ymzDQl95 580 | O8vI6TnDpUa+bvpkWEAlBK2DuElRojXfPo35ABu0IetQ9xyR+3IzaepHL7Ekf0n0 581 | H9vFTmeyYUc3B1m7RDwnUJuAlWRt1qQHmOejkzTDBZALeg+BJ5PtnWqCr29+JZB8 582 | cwUJ3Ca8YpbiCrXWYHu3jlXDDyEhQ73t5OlruOMiYp+opmRySu4rF2d9yJIXnq6u 583 | f0WNb6G6JzlVMOqHKvtmrnwXb9zlFTSXb/NkxNmbYPrTvKmSr09YDC/p9iRkuDSe 584 | I/OEiQIbBBABAgAGBQJRVI1UAAoJEH59M1xaLV7BfjEP93RHY4cUujjYok+whz1b 585 | PcAw7uZ+lsKZJdzGgz4LJ338ZPaqAC32GAi2/eKqD12P4BuM81Qp+kYbhDgP/H+1 586 | vTXwLcXhTU8sL89DaVhfRyy+6/canky42kK4dLltbiQvI6lFmHUmuqeIvwrUynxx 587 | 0GEx/of5lyRC5dKEYfA6EbIEy7dftuJeKRK92BCZsNAy1oNvG5hn4kZcXS5pw9We 588 | UBTBbUXnkgiGZQchXu36mhij/wzQcn+UH3Llq5qaslPhpyw9ZL59gcCN8Z+lITtP 589 | tBa6IgonYSalVrmGkaHMgj1qEXTC0dMqQXt3tFhXWnVRQDme7xAVOil7x/IREkNm 590 | DzwgK35Olcnv48n1MdxeA0j6lqkrLbAoc9+XLoH7TvUEDifRRfS1XvOpaT1rGg36 591 | fJQv3v+TnvaQtNvFqGsERhemF016qpcdr+51alNhorBIZiYiiFNIioFmHtdr+uEu 592 | zHZR+BHkHRZbfgTxxPO6JnP///////////////////////////////////////// 593 | //////////////////////////////////////////////////////////////// 594 | //////////////////////////////////////////////////////////////// 595 | //////////////////////+JAhwEEAEKAAYFAlm1wa8ACgkQYqtsLak2a0whWA// 596 | R40KQjkdfrjcdCzcb3EaDw6bI7QqTnC/RPUEgDA+MDa3PPeI0SZUwNpzz/ep4oJ8 597 | 7ISF0mmq9nFFnwEqg6Saci9vB3E8GjDyLF1YYs3dkh5Ekv9z3+jESVDfmrJWYJUS 598 | S9IoW+lAAbma/Gri6wxEF6iX9/tVKwpHuSpTjQZqZbWrwTGguQCadAAd8fHx1mYw 599 | EEbi2BW9IbA/SCkoHJ0QjrG0lcZ7Evom6a8eaYACciYZA4v5x+/yhpWn29dEXCtR 600 | mzHk5sZe1XjF4ZOved35m8KihwroAddxmIsXdeyeSgBSHsiROwU8yND3DeVv8Tww 601 | +N8ushvDRYljI2ThWgx48Vh9aMYxTrNVErB26tXWd2JILitmVqmp+ujvz67ykOiK 602 | M2nMWy+bLhjz3DzQ3mXmrIxno8w6hmj6IfmG/EhNcK0IkezRBo3O+7w9lIbkZviF 603 | Wf41yMdR+q6U3FMizJ8hLK9t2BDESYXFJd4c+gw6G9pmfSeJYv0lEABfIzW6s6E8 604 | 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 644 | =NJeZ 645 | -----END PGP PUBLIC KEY BLOCK----- 646 | -------------------------------------------------------------------------------- /rootfs-overlay/arm/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DECODEproject/decode-os/a2ac08e3bc76b851e8c18341ab451354c82dfce3/rootfs-overlay/arm/.keep -------------------------------------------------------------------------------- /rootfs-overlay/arm/etc/cron.hourly/decode-update: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # stub for the squashfs update mechanism 3 | -------------------------------------------------------------------------------- /rootfs-overlay/arm/etc/part-expand.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # This should resize the sdcard to its full capacity. 3 | 4 | [ -f /etc/part-expanded ] && exit 0 5 | 6 | cat < /etc/part-expanded 25 | -------------------------------------------------------------------------------- /rootfs-overlay/common/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DECODEproject/decode-os/a2ac08e3bc76b851e8c18341ab451354c82dfce3/rootfs-overlay/common/.keep -------------------------------------------------------------------------------- /rootfs-overlay/common/etc/rc.local: -------------------------------------------------------------------------------- 1 | #!/bin/sh -e 2 | # 3 | # rc.local 4 | # 5 | # This script is executed at the end of each multiuser runlevel. 6 | # Make sure that the script will "exit 0" on success or any other 7 | # value on error. 8 | # 9 | # In order to enable or disable this script just change the execution 10 | # bits. 11 | # 12 | # By default this script does nothing. 13 | 14 | # Regenerate SSH keys on first boot. 15 | [ -f /etc/ssh/ssh_host_rsa_key.pub ] || ssh-keygen -A 16 | 17 | exit 0 18 | -------------------------------------------------------------------------------- /rootfs-overlay/live/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DECODEproject/decode-os/a2ac08e3bc76b851e8c18341ab451354c82dfce3/rootfs-overlay/live/.keep -------------------------------------------------------------------------------- /rootfs-overlay/vm/.keep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/DECODEproject/decode-os/a2ac08e3bc76b851e8c18341ab451354c82dfce3/rootfs-overlay/vm/.keep --------------------------------------------------------------------------------