1.11.525 • Published 10 months ago

mam v1.11.525

Weekly downloads
377
License
-
Repository
-
Last release
10 months ago

$mol

Reactive micro-modular UI framework. Very simple, but very powerful!

npm.io

Contents

Features

Reviews

Quick start

Video of this process

Create MAM project

The easiest way is to checkout this preconfigured MAM repository and start a dev server:

git clone https://github.com/hyoo-ru/mam.git ./mam && cd mam
npm install && npm start

Or simply use Gitpod Online Dev Workspace.

Setup your editor

Create your application component

The following example uses the namespace "my" and the application name "hello", but you can use your own namespace and application name.

Let's create a component that allows you to enter your name and display greeting text: "Hello, " + your name.

You need to create next files:

  • ./my/hello/index.html - Web entry point
  • ./my/hello/hello.view.tree - Declarative component description
  • ./my/hello/hello.view.ts - Behaviour/User interface logic
  • ./my/hello/hello.test.ts - Tests
  • ./my/hello/hello.view.css - Styles

Add web entry point at ./my/hello/index.html:

<!doctype html> <!-- Disable quirks mode -->
<html mol_view_root> <!-- Reset root styles -->
	<head>
		<meta charset="utf-8" /> <!-- Force utf-8 encoding -->
		<meta
			name="viewport"
			content="width=device-width, height=device-height, initial-scale=1"
		/> <!-- Disable mobile browser auto zoom, $mol is adaptive -->
		<meta name="mobile-web-app-capable" content="yes"> <!-- Fullscreen support -->
		<meta name="apple-mobile-web-app-capable" content="yes">
	</head>
	<body mol_view_root> <!-- Reset root styles -->
		<div mol_view_root="$my_hello"></div> <!-- Autobind component to element on load -->
		<script src="web.js"></script> <!-- Load autogenerated js bundle -->
	</body>
</html>

Your application will be served at http://localhost:9080/my/hello/. Open it. You should refresh page to view your changes.

Add declarative component description at ./my/hello/hello.view.tree with string input field and greeting message:

$my_hello $mol_view
	sub /
		<= Name $mol_string
			hint \Name
			value? <=> name? \
		<= message \

Add your behaviour at ./my/hello/hello.view.ts by extending generated class:

namespace $.$$ {
	export class $my_hello extends $.$my_hello {
		
		message() {
			let name = this.name()
			return name && `Hello, ${name}!`
		}
		
	}
}

Add tests for your behaviour at ./my/hello/hello.test.ts

namespace $.$$ {

	$mol_test({

		'Generating greeting message'() {

			const app = new $my_hello
			$mol_assert_equal( app.message() , '' )
			
			app.name( 'Jin' )
			$mol_assert_equal( app.message() , 'Hello, Jin!' )

		}

	})

}

Add styles at ./my/hello/hello.view.css:

/* Styling BEM-block by autogenerated attribute */
[my_hello] {
	display: flex;
	flex-direction: column;
	align-items: center;
	font: 1.5rem/1 sans-serif;
	box-shadow: 0 0 0 1px var(--mol_theme_line);
	flex: 1 1 auto;
	align-self: stretch;
	margin: 0;
}

/* Styling BEM-element by autogenerated attribute */
[my_hello_name] {
	flex-grow: 0;
	margin: 1rem;
	width: 14rem;
}

That is all!

Tutorials

Rationale

Zero configuration

Instead of ensuring configurability by any means, $mol concentrates on everything working good directly out of the box and does not bother $mol's developer by a typical configuration process. (Nevertheless, this doesn't exclude setup for your needs if required)

For example if you download base MAM-project you'll get this:

Building of JS and CSS bundles for different platforms. A bundle can be built for any module. This bundle would contain sources of that module and sources of all other modules on which that module depends on. There also would not be any redundant modules in the bundle.

Here is a full set of supported bundles:

  • -/web.js - JS for browser
  • -/web.d.ts - TypeScript definitions
  • -/web.test.js - JS with tests for a browser
  • -/web.deps.json - map of dependencies modules for browser
  • -/web.locale=en.json - strings pulled from *.view.tree and *.locale=en.json sources
  • -/node.js - JS for NodeJS
  • -/node.test.js - JS with tests for NodeJS
  • -/node.deps.json - a map of dependencies modules for NodeJS

Support of Source Maps. Sources are compiled and integrated into maps, they are fully self-sufficient.

Development server, which compiles bundles as needed. For example, when http://localhost:9080/hyoo/todomvc/-/web.js is requested, the js bundle is built from hyoo/todomvc for web environment. Rebuilding occurs only if any source files are changed.

Transpilling TypeScript into JS. In TS configuration enabled support decorators and disabled implicit any type, to prevent missing typing by change.

Watching dependencies by fact of using and automatic inclusion of the needed modules on further bundling. You don't need to write include and require. All you need is to refer instance by full name like $mol_state_arg and $mol.state.arg (depending on its definition) in *.ts, *.view.ts, *.view.tree and *.jam.js files. Dependencies in CSS files are looked for by entries like [mol_check_checked] , [mol_check_checked= and .mol_check_checked.

Lego components

$mol uses the component approach to building interfaces, however every component is self-sufficient and can be used as a self-sufficient application. Small components are aggregated inside larger components etc.

Unlike another frameworks, $mol does not isolate the internals of its components. Vice versa, a comfortable mechanism is provided for developers to configure them, the creator of the component doesn't have to do any additional actions.

For example, to set the list of sub components you need to redefine sub property in view.tree

Confirm_delete $mol_row sub /
	<= Yes $mol_button_minor title \Yes
	<= No $mol_button_major title \No

Or the same code in TypeScript would be:

@ $mol_mem
Confirm_delete() {
	return $mol_row.make({
		sub : ()=> [ this.Yes() , this.No() ] ,
	})
}

In both variants the compiler would verify the existence of the property and correspondence of the signature. Normally you don't need to work with fields of the object directly, all definable properties are public and can be safely overloaded.

Details about viewers and view.tree language: $mol_view.

Laziness

$mol_view implements lazy rendering. $mol_scroll watches scroll position and suggests the view height to embedded components. $mol_list knows the view height and minimal sizes of the embedded components, it excludes components definitely outside viewport from rendering. And all other components report their minimal size through minimal_height property.

$my_icon $mol_view
	minimal_height 16

As the result opening of any window occurs instantly. It's independent from output data size. And since data would not be rendered, any requests would not be proceeded. This allows us to download them partly, when they are needed. Such a feature is possible due to reactive architecture, that penetrates through all layers of the application.

Reactivity

Unlike control-flow architectures, $mol implements the data-flow architecture. All applications are defined as a set of classes having properties. Every property is defined as some function from another property (and properties of another classes too). Properties, which were called while processing a function are saved as dependencies of current property. When their values change, all dependent properties would be invalidated cascading. Calling a non relevant property would lead to its pre-actualization.

In this way the whole application at the execution stage represents a huge tree of dependencies, with a special property at the root of the tree, which in case of invalidation would actualize itself automatically. And as any property always knows, whether something depends on it or not, then it is given a simple and reliable mechanism of controlling lifecycle of objects - they are created when dependence appears and are destroyed when nothing depends on them. This solves two fundamental problems: resources leaks and cache invalidation.

Besides, the reactive architecture allows us to abstract code elegantly from asynchronous operations. If the function can't return value at the moment, it can throw Promise and is marked as part of the tree as "waiting of results". When result is retrieved, it can be inserted into property directly and an application would be reconstructed for the new state.

namespace $ {
	export class $my_greeter {
		
		@ $mol_mem
		greeting() {
			const user_name = $mol_fetch.json( 'https://example.org/profile/name' )
			return `Hello, ${ user_name }!`
		}
		
	}
}

Details: $mol_wire.

Debugging

$mol pays special attention to debugging possibilities and research of how its code works.

A human friendly id is automatically formed for every DOM-element, e.g. $hyoo_todomvc.root(0).taskRow(0).titler(), which is a valid javascript code, that could be executed in a console, returning a link to the component, which the DOM-element corresponds to. Unfolding the content of the component you'd see names and values for its fields like:

$hyoo_todomvc
    dom_node() : div#$hyoo_todomvc.root(0)
    task(1474385802391) : Object
    task(1474386443175) : Object
    taskRow(0) : $hyoo_todomvc_task_rowRow
    taskRow(1) : $hyoo_todomvc_task_rowRow
    taskrows() : Array[2]

The name of the field corresponds to calling the property, the content of the field would be available through. And thanks to naming classes and functions by underscoring, you always know which class instance you're looking at and can briefly find it in the code by searching the substring.

Modules

Flow

Object model

Lifecycle

Functions

Collections

State modules

Simple components

Simple controls

Layout components

Plugin components

Complex components

Charts

Data formats

Math

Resources

Testing

API

Time

Maps

WebAssemply

Web Services

Building

Usage from NPM ecosystem

You can manually build any $mol module as standalone lib:

git clone https://github.com/hyoo-ru/mam.git ./mam
cd mam
npm install
npm start path/to/module
cp path/to/module/-/* your/build/directory

Some libs are already published to NPM:

  • $mol_data - Static typed DTO with strict runtime validation and user friendly error messages.
  • $mol_strict - Makes JS runtime more strict.
  • $mol_time - Proper date/time/duration/interval arithmetic.
  • $mol_type - TypeScript meta types for complex logic.
  • $mol_regexp - Regular Expressions builder.
  • $mol_crypto - Efficient cryptographic algorithms.
  • $mol_db - Static typed IndexedDB wrapper with auto migrations.
  • $hyoo_crowd - Conflict-free Reinterpretable Ordered Washed Data.
  • $mol_plot - Fastest plot lib for vector graphics.

All of them are very small, powerful and fastest. Use it for your pleasure.

Contributors

This project exists thanks to all the people who contribute.

Cool stuff

Donate

$mol_build$mol$mol_wire_async$mol_wire$mol_wire_sub$mol_wire_pub$mol_fail$mol_wire_cursor$mol_wire_fiber$mol_wire_pub_sub$mol_dev_format$mol_dev$mol_after_tick$mol_after$mol_object2$mol_ambient$mol_owning$mol_delegate$mol_fail_hidden$mol_type_writable$mol_type$mol_func_name$mol_func$mol_promise_like$mol_promise$mol_wire_task$mol_compare_deep$mol_compare$mol_log3$mol_tree2_from_json$mol_tree2_from$mol_tree2$mol_span$mol_tree2_from_string$mol_error_syntax$mol_error$mol_tree2_to_string$mol_tree2_to$mol_term_color$mol_term$mol_object$mol_mem$mol_wire_solo$mol_wire_atom$mol_key$mol_guid$mol_after_frame$mol_after_timeout$mol_wire_method$mol_type_foot$mol_type_tail$mol_fail_log$mol_fail_catch$mol_wire_plex$mol_file_base$mol_file$node$mol_exec$mol_run$mol_error_mix$mol_env$mol_wire_sync$mol_action$node_modules$mol_const$mol_wire_probe$mol_lock$mol_mem_cached$mol_compare_array$mol_charset_decode$mol_charset$mol_charset_encoding$mol_charset_encode$mol_file_transaction$mol_wire_solid$mol_build_server$mol_server$mol_compare_text$mol_tree2_js_to_text$mol_tree2_js_to$mol_tree2_js$mol_tree2_js_is_number$mol_tree2_js_is$mol_view_tree2_to_js$mol_view_tree2_to$mol_view_tree2$mol_view$mol_view_tree2_class$mol_view_tree2_prop$mol_regexp$mol_type_merge$mol_type_equals$mol_type_intersect$mol_type_override$mol_unicode$mol_locale$mol_state_local$mol_state$mol_dom_context$mol_dom$mol_storage$mol_mem_persist$mol_guard$mol_view_tree2_to_js_test$mol_view_tree2_to_dts$mol_type_enforce$mol_view_tree2_to_locale$mol_tree2_text_to_string$mol_tree2_text_to$mol_tree2_text$mol_tree2_text_to_sourcemap$mol_vlq$mol_sourcemap$mol_graph$mol_sourcemap_strip$mol_sourcemap_from$mol_sourcemap_dataurl$mol_sourcemap_url$mol_base64_encode$mol_base64$mol_build_ensure$mol_build_ensure_git$mol_build_ensure_vcs$mol_build_ensure_npm$mol_build_graph$mol_sourcemap_builder$mol_tree2_xml_to_text$mol_tree2_xml_to$mol_tree2_xml$mol_html_encode$mol_html
1.11.399

1 year ago

1.11.397

1 year ago

1.11.398

1 year ago

1.11.388

1 year ago

1.11.389

1 year ago

1.11.386

1 year ago

1.11.387

1 year ago

1.11.391

1 year ago

1.11.392

1 year ago

1.11.390

1 year ago

1.11.395

1 year ago

1.11.396

1 year ago

1.11.393

1 year ago

1.11.394

1 year ago

1.11.510

10 months ago

1.11.513

10 months ago

1.11.514

10 months ago

1.11.511

10 months ago

1.11.512

10 months ago

1.11.517

10 months ago

1.11.518

10 months ago

1.11.515

10 months ago

1.11.516

10 months ago

1.11.519

10 months ago

1.11.502

11 months ago

1.11.503

11 months ago

1.11.500

11 months ago

1.11.501

11 months ago

1.11.506

11 months ago

1.11.507

11 months ago

1.11.504

11 months ago

1.11.505

11 months ago

1.11.508

11 months ago

1.11.509

10 months ago

1.11.410

1 year ago

1.11.411

1 year ago

1.11.414

1 year ago

1.11.415

1 year ago

1.11.412

1 year ago

1.11.413

1 year ago

1.11.418

1 year ago

1.11.419

1 year ago

1.11.416

1 year ago

1.11.417

1 year ago

1.11.520

10 months ago

1.11.521

10 months ago

1.11.400

1 year ago

1.11.524

10 months ago

1.11.403

1 year ago

1.11.525

10 months ago

1.11.404

1 year ago

1.11.522

10 months ago

1.11.401

1 year ago

1.11.523

10 months ago

1.11.402

1 year ago

1.11.407

1 year ago

1.11.408

1 year ago

1.11.405

1 year ago

1.11.406

1 year ago

1.11.409

1 year ago

1.11.432

1 year ago

1.11.433

1 year ago

1.11.430

1 year ago

1.11.431

1 year ago

1.11.436

1 year ago

1.11.437

1 year ago

1.11.434

1 year ago

1.11.435

1 year ago

1.11.438

1 year ago

1.11.439

1 year ago

1.11.440

1 year ago

1.11.421

1 year ago

1.11.422

1 year ago

1.11.420

1 year ago

1.11.425

1 year ago

1.11.426

1 year ago

1.11.423

1 year ago

1.11.424

1 year ago

1.11.429

1 year ago

1.11.427

1 year ago

1.11.428

1 year ago

1.11.454

12 months ago

1.11.455

12 months ago

1.11.452

12 months ago

1.11.453

12 months ago

1.11.458

12 months ago

1.11.459

12 months ago

1.11.456

12 months ago

1.11.457

12 months ago

1.11.461

12 months ago

1.11.462

12 months ago

1.11.460

12 months ago

1.11.443

1 year ago

1.11.444

1 year ago

1.11.441

1 year ago

1.11.442

1 year ago

1.11.447

12 months ago

1.11.448

12 months ago

1.11.445

1 year ago

1.11.446

1 year ago

1.11.449

12 months ago

1.11.450

12 months ago

1.11.451

12 months ago

1.11.476

11 months ago

1.11.477

11 months ago

1.11.474

11 months ago

1.11.475

11 months ago

1.11.478

11 months ago

1.11.479

11 months ago

1.11.480

11 months ago

1.11.483

11 months ago

1.11.484

11 months ago

1.11.481

11 months ago

1.11.482

11 months ago

1.11.465

12 months ago

1.11.466

12 months ago

1.11.463

12 months ago

1.11.464

12 months ago

1.11.469

12 months ago

1.11.467

12 months ago

1.11.468

12 months ago

1.11.472

12 months ago

1.11.473

12 months ago

1.11.470

12 months ago

1.11.471

12 months ago

1.11.498

11 months ago

1.11.377

1 year ago

1.11.499

11 months ago

1.11.378

1 year ago

1.11.496

11 months ago

1.11.375

1 year ago

1.11.497

11 months ago

1.11.376

1 year ago

1.11.379

1 year ago

1.11.380

1 year ago

1.11.381

1 year ago

1.11.384

1 year ago

1.11.385

1 year ago

1.11.382

1 year ago

1.11.383

1 year ago

1.11.487

11 months ago

1.11.488

11 months ago

1.11.485

11 months ago

1.11.486

11 months ago

1.11.489

11 months ago

1.11.490

11 months ago

1.11.491

11 months ago

1.11.494

11 months ago

1.11.373

1 year ago

1.11.495

11 months ago

1.11.374

1 year ago

1.11.492

11 months ago

1.11.493

11 months ago

1.11.1

1 year ago

1.11.333

1 year ago

1.11.334

1 year ago

1.11.332

1 year ago

1.11.337

1 year ago

1.11.338

1 year ago

1.11.335

1 year ago

1.11.336

1 year ago

1.11.339

1 year ago

1.11.340

1 year ago

1.11.341

1 year ago

1.11.355

1 year ago

1.11.356

1 year ago

1.11.353

1 year ago

1.11.354

1 year ago

1.11.359

1 year ago

1.11.357

1 year ago

1.11.358

1 year ago

1.11.362

1 year ago

1.11.363

1 year ago

1.11.360

1 year ago

1.11.361

1 year ago

1.11.344

1 year ago

1.11.345

1 year ago

1.11.342

1 year ago

1.11.343

1 year ago

1.11.348

1 year ago

1.11.349

1 year ago

1.11.346

1 year ago

1.11.347

1 year ago

1.11.351

1 year ago

1.11.352

1 year ago

1.11.350

1 year ago

1.11.366

1 year ago

1.11.367

1 year ago

1.11.364

1 year ago

1.11.365

1 year ago

1.11.368

1 year ago

1.11.369

1 year ago

1.11.370

1 year ago

1.11.371

1 year ago

1.11.372

1 year ago

1.11.278

2 years ago

1.11.279

2 years ago

1.11.276

2 years ago

1.11.277

2 years ago

1.11.281

2 years ago

1.11.282

2 years ago

1.11.280

2 years ago

1.11.285

1 year ago

1.11.286

1 year ago

1.11.283

1 year ago

1.11.284

1 year ago

1.11.267

2 years ago

1.11.268

2 years ago

1.11.265

2 years ago

1.11.266

2 years ago

1.11.269

2 years ago

1.11.270

2 years ago

1.11.271

2 years ago

1.11.274

2 years ago

1.11.275

2 years ago

1.11.272

2 years ago

1.11.273

2 years ago

1.11.298

1 year ago

1.11.299

1 year ago

1.11.289

1 year ago

1.11.287

1 year ago

1.11.288

1 year ago

1.11.292

1 year ago

1.11.293

1 year ago

1.11.290

1 year ago

1.11.291

1 year ago

1.11.296

1 year ago

1.11.297

1 year ago

1.11.294

1 year ago

1.11.295

1 year ago

1.11.311

1 year ago

1.11.312

1 year ago

1.11.310

1 year ago

1.11.315

1 year ago

1.11.316

1 year ago

1.11.313

1 year ago

1.11.314

1 year ago

1.11.319

1 year ago

1.11.317

1 year ago

1.11.318

1 year ago

1.11.300

1 year ago

1.11.301

1 year ago

1.11.304

1 year ago

1.11.305

1 year ago

1.11.302

1 year ago

1.11.303

1 year ago

1.11.308

1 year ago

1.11.309

1 year ago

1.11.306

1 year ago

1.11.307

1 year ago

1.11.331

1 year ago

1.11.322

1 year ago

1.11.323

1 year ago

1.11.320

1 year ago

1.11.321

1 year ago

1.11.326

1 year ago

1.11.327

1 year ago

1.11.324

1 year ago

1.11.325

1 year ago

1.11.328

1 year ago

1.11.329

1 year ago

1.11.330

1 year ago

1.11.234

2 years ago

1.11.235

2 years ago

1.11.232

2 years ago

1.11.233

2 years ago

1.11.238

2 years ago

1.11.239

2 years ago

1.11.236

2 years ago

1.11.237

2 years ago

1.11.241

2 years ago

1.11.242

2 years ago

1.11.240

2 years ago

1.11.256

2 years ago

1.11.257

2 years ago

1.11.254

2 years ago

1.11.255

2 years ago

1.11.258

2 years ago

1.11.259

2 years ago

1.11.260

2 years ago

1.11.263

2 years ago

1.11.264

2 years ago

1.11.261

2 years ago

1.11.262

2 years ago

1.11.245

2 years ago

1.11.246

2 years ago

1.11.243

2 years ago

1.11.244

2 years ago

1.11.249

2 years ago

1.11.247

2 years ago

1.11.248

2 years ago

1.11.252

2 years ago

1.11.253

2 years ago

1.11.250

2 years ago

1.11.251

2 years ago

1.11.228

2 years ago

1.11.229

2 years ago

1.11.230

2 years ago

1.11.231

2 years ago

1.11.227

2 years ago

1.11.226

2 years ago

1.11.224

2 years ago

1.11.225

2 years ago

1.11.223

2 years ago

1.11.222

2 years ago

1.11.221

2 years ago

1.11.220

2 years ago

1.11.219

2 years ago

1.11.216

2 years ago

1.11.217

2 years ago

1.11.218

2 years ago

1.11.213

2 years ago

1.11.214

2 years ago

1.11.215

2 years ago

1.11.212

2 years ago

1.11.211

2 years ago

1.11.210

2 years ago

1.11.209

2 years ago

1.11.208

2 years ago

1.11.207

2 years ago

1.11.206

2 years ago

1.11.205

2 years ago

1.11.204

2 years ago

1.11.203

2 years ago

1.11.201

2 years ago

1.11.202

2 years ago

1.11.200

2 years ago

1.11.199

2 years ago

1.11.198

2 years ago

1.11.197

2 years ago

1.11.195

2 years ago

1.11.196

2 years ago

1.11.193

2 years ago

1.11.194

2 years ago

1.11.191

2 years ago

1.11.192

2 years ago

1.11.190

2 years ago

1.11.189

2 years ago

1.11.188

2 years ago

1.11.187

2 years ago

1.11.186

2 years ago

1.11.185

2 years ago

1.11.183

2 years ago

1.11.184

2 years ago

1.11.182

2 years ago

1.11.181

2 years ago

1.11.180

2 years ago

1.11.179

2 years ago

1.11.178

2 years ago

1.11.177

2 years ago

1.11.176

2 years ago

1.11.175

2 years ago

1.11.173

2 years ago

1.11.174

2 years ago

1.11.172

2 years ago

1.11.169

2 years ago

1.11.171

2 years ago

1.11.170

2 years ago

1.11.168

2 years ago

1.11.167

2 years ago

1.11.165

2 years ago

1.11.166

2 years ago

1.11.164

2 years ago

1.11.162

2 years ago

1.11.163

2 years ago

1.11.159

2 years ago

1.11.160

2 years ago

1.11.161

2 years ago

1.11.158

2 years ago

1.11.157

2 years ago

1.11.155

2 years ago

1.11.156

2 years ago

1.11.154

2 years ago

1.11.153

2 years ago

1.11.151

2 years ago

1.11.152

2 years ago

1.11.150

2 years ago

1.11.148

2 years ago

1.11.149

2 years ago

1.11.147

2 years ago

1.11.146

2 years ago

1.11.144

2 years ago

1.11.145

2 years ago

1.11.139

2 years ago

1.11.142

2 years ago

1.11.143

2 years ago

1.11.140

2 years ago

1.11.141

2 years ago

1.11.135

2 years ago

1.11.136

2 years ago

1.11.133

2 years ago

1.11.134

2 years ago

1.11.137

2 years ago

1.11.138

2 years ago

1.11.132

2 years ago

1.11.129

2 years ago

1.11.131

2 years ago

1.11.130

2 years ago

1.11.128

2 years ago

1.11.126

2 years ago

1.11.127

2 years ago

1.11.124

2 years ago

1.11.125

2 years ago

1.11.122

2 years ago

1.11.123

2 years ago

1.11.117

2 years ago

1.11.118

2 years ago

1.11.116

2 years ago

1.11.119

2 years ago

1.11.120

2 years ago

1.11.121

2 years ago

1.11.115

2 years ago

1.11.114

2 years ago

1.11.113

2 years ago

1.11.112

2 years ago

1.11.111

2 years ago

1.11.110

2 years ago

1.11.109

2 years ago

1.11.103

2 years ago

1.11.106

2 years ago

1.11.107

2 years ago

1.11.104

2 years ago

1.11.105

2 years ago

1.11.108

2 years ago

1.11.102

2 years ago

1.11.101

2 years ago

1.11.96

2 years ago

1.11.97

2 years ago

1.11.95

2 years ago

1.11.98

2 years ago

1.11.99

2 years ago

1.11.100

2 years ago

1.11.94

2 years ago

1.11.92

2 years ago

1.11.93

2 years ago

1.11.91

2 years ago

1.11.90

2 years ago

1.11.89

2 years ago

1.11.87

2 years ago

1.11.88

2 years ago

1.11.85

2 years ago

1.11.86

2 years ago

1.11.83

2 years ago

1.11.84

2 years ago

1.11.82

2 years ago

1.11.81

2 years ago

1.11.80

2 years ago

1.11.79

2 years ago

1.11.75

2 years ago

1.11.78

2 years ago

1.11.76

2 years ago

1.11.77

2 years ago

1.11.74

2 years ago

1.11.73

2 years ago

1.11.72

2 years ago

1.11.71

2 years ago

1.11.70

2 years ago

1.11.69

2 years ago

1.11.68

2 years ago

1.11.67

2 years ago

1.11.66

2 years ago

1.11.65

2 years ago

1.11.63

2 years ago

1.11.64

2 years ago

1.11.61

2 years ago

1.11.62

2 years ago

1.11.59

2 years ago

1.11.60

2 years ago

1.11.58

2 years ago

1.11.56

2 years ago

1.11.57

2 years ago

1.11.53

2 years ago

1.11.54

2 years ago

1.11.55

2 years ago

1.11.52

2 years ago

1.11.51

2 years ago

1.11.50

2 years ago

1.11.49

2 years ago

1.11.48

2 years ago

1.11.47

2 years ago

1.11.46

2 years ago

1.11.41

2 years ago

1.11.42

2 years ago

1.11.40

2 years ago

1.11.45

2 years ago

1.11.43

2 years ago

1.11.44

2 years ago

1.11.38

2 years ago

1.11.39

2 years ago

1.11.36

2 years ago

1.11.37

2 years ago

1.11.34

3 years ago

1.11.35

3 years ago

1.11.33

3 years ago

1.11.30

4 years ago

1.11.31

4 years ago

1.11.32

3 years ago

1.11.29

4 years ago

1.11.28

4 years ago

1.11.27

4 years ago

1.11.25

4 years ago

1.11.26

4 years ago

1.11.23

5 years ago

1.11.24

5 years ago

1.11.21

5 years ago

1.11.22

5 years ago

1.11.20

5 years ago

1.11.19

5 years ago

1.11.16

6 years ago

1.11.17

6 years ago

1.11.18

6 years ago

1.11.15

6 years ago

1.11.14

6 years ago

1.11.13

6 years ago

1.11.12

6 years ago

1.10.11

6 years ago

1.10.10

6 years ago

1.10.9

6 years ago

1.10.8

6 years ago

1.10.7

6 years ago

1.10.1

6 years ago

1.10.0

6 years ago

1.9.10

6 years ago

1.9.8

6 years ago

1.9.6

6 years ago

1.9.5

6 years ago

1.9.4

6 years ago

1.8.0

7 years ago

1.7.0

7 years ago

1.6.3

7 years ago

1.6.2

7 years ago

1.6.1

7 years ago

1.6.0

7 years ago

1.5.1

9 years ago

1.5.0

9 years ago

1.4.0

9 years ago

1.3.0

9 years ago

1.2.0

9 years ago

1.1.0

9 years ago

1.0.0

9 years ago

0.0.1

11 years ago