From de295645a0b114e525fb95abc91ddd430bbc072f Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Wed, 12 Dec 2018 10:09:22 +0100 Subject: [PATCH 01/61] initial draft Signed-off-by: Daniel Hardman --- text/tictactoe-protocol/README.md | 243 ++++++++++++++++++++++ text/tictactoe-protocol/state-machine.png | Bin 0 -> 89695 bytes text/tictactoe-protocol/tictactoe.png | Bin 0 -> 13474 bytes 3 files changed, 243 insertions(+) create mode 100644 text/tictactoe-protocol/README.md create mode 100644 text/tictactoe-protocol/state-machine.png create mode 100644 text/tictactoe-protocol/tictactoe.png diff --git a/text/tictactoe-protocol/README.md b/text/tictactoe-protocol/README.md new file mode 100644 index 000000000..28f3190f7 --- /dev/null +++ b/text/tictactoe-protocol/README.md @@ -0,0 +1,243 @@ +- Name: tictactoe-protocol +- Authors: Daniel Hardman +- Start Date: 2018-12-11 +- PR: + +# Tic-Tac-Toe Protocol +[summary]: #summary + +Describes a simple protocol, already familiar to most +developers, as a way to demonstrate how all protocols should +be documented. + + Note: Read the document below as a prototype and a good example + of how to go about documenting a protocol in a HIPE. The format + doesn't have to be slavishly followed, but considering the issues + covered in this example should be helpful. + +# Motivation +[motivation]: #motivation + +Playing tic-tac-toe is a good way to test whether agents are +working properly, since it requires two parties to take turns +and to communicate reliably about state. However, it is also +pretty simple, and it has a low bar for trust (it's not dangerous +to play tic-tac-toe with a malicious stranger). Thus, we expect +agent tic-tac-toe to be a good way to test basic plumbing and to +identify functional gaps. The game also provides a way of testing +interactions with the human owners of agents, or of hooking up +an agent AI. + +# Tutorial +[tutorial]: #tutorial + +[Tic-tac-toe is a simple game](https://en.wikipedia.org/wiki/Tic-tac-toe) +where players take turns placing Xs and Os in a 3x3 grid, attempting to +capture 3 cells of the grid in a straight line. + +![tictactoe by Symode09 via Wikimedia Commons](tictactoe.png) + +### Interaction + +A tic-tac-toe `game` is an interaction where 2 parties take turns to +make up to 9 moves. It starts when either party proposes the game, and +ends when one of the parties wins, or when all all cells in the grid +are occupied but nobody has won (a draw). + +Illegal moves and moving out of turn are errors that trigger a complaint +from the other player. However, they do not scuttle the interaction. +A game can also be abandoned in an unfinished state by either player, +for any reason. Games can last any amount of time. + + About the INTERACTION section: Here we describe the flow at a very + high level. We identify preconditions, ways the protocol can start + and end, and what can go wrong. We also talk about timing + constraints and other assumptions. + +### Roles + +There are two parties in a tic-tac-toe game. One of them becomes +`player_x` for the duration of the protocol; the other is `player_o`. +These names correspond to the marks they place. There are no special +requirements about who can be a player. The parties do not need to be +trusted or even known to one another, either at the outset or as the +game proceeds. No prior setup is required, other than an ability to +communicate. + + About the ROLES section: Here we name the roles in the protocol, + say who and how many can play each role, and describe constraints. + We also explore the issue of trust among the roles. + +### Messages + +The trust ping interaction begins when one party sends a `move` message +to the other. It looks like this: + +```JSON +{ + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", + "@id": "518be002-de8e-456e-b3d5-8fe472477a86", + "ill_be": "X", + "moves": ["X:B2"], + "comment_ltxt": "Let's play tic-tac-to. I'll be X. I pick cell B2." +} +``` + +`@id` is required here, as it establishes a [message thread](https://github.com/hyperledger/indy-hipe/pull/30) +that will govern the rest of the game. + +`ill_be` ("I'll be") tells which mark (X or O) the sender is placing. +It is required. + +`moves` is optional in the first message of the interaction. If missing +or empty, the sender of the first message is inviting the recipient to +make the first move. If it contains a move, the sender is moving first. + +Moves are strings like "X:B2" that match the regular expression `(?i)[XO]:[A-C][1-3]`. +They identify a mark to be placed ("X" or "O") and a position in the 3x3 +grid. The grid's columns and rows are numbered like familiar spreadsheets, +with columns A, B, and C, and rows 1, 2, and 3. + +`comment_ltxt` is optional and probably not used much, but could be a way +for players to razz one another or chat as they play. It follows the +conventions of [localized messages]( +https://github.com/hyperledger/indy-hipe/pull/64) + +Other decorators could be placed on tic-tac-toe messages, such as those +to enable [message timing](https://github.com/hyperledger/indy-hipe/blob/2167762c31dec10777a36d14c5038130b1a06670/text/message-timing/README.md#decorators) +to force players to make a move within a certain period of time. + +Once the initial `move` message has been sent, game play continues +by each player taking turns sending responses, which are also `move` +messages. With each new message the `move` array inside the message +grows by one, ensuring that the players agree on the current accumulated +state of the game. The `ill_be` field is not required after the initial +message, but if present, it must accurately reflect the role of the +message sender, and would thus alternate values between `X` and `O`. + +Subsequent messages in the game use the [message threading]( +https://github.com/hyperledger/indy-hipe/pull/30) mechanism where the +`@id` of the first `move` becomes the `@thread.thid` for the duration +of the game. + +An evolving sequence of `move` messages might thus look like this, +suppressing all fields except what's required: + +##### Message/Move 2 + +```JSON +{ + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", + "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 0 }, + "moves": ["X:B2", "O:A1"] +} +``` + +This is the first message in the thread that's sent by `player_o'; hence +it has `seqnum` = 0. + +##### Message/Move 3 + +```JSON +{ + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", + "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 1 }, + "moves": ["X:B2", "O:A1", "X:A2"] +} +``` + +This is the second message in the thread by `player_x`. + +##### Message/Move 4 +```JSON +{ + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", + "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 1 }, + "moves": ["X:B2", "O:A1", "X:A2", "O:B1"] +} +``` + +...and so forth. + +Note that the order of the items in the `moves` array is NOT significant. +The state of the game at any given point of time is fully captured by +the moves, regardless of the order in which they were made. + +If a player makes an illegal move or another error occurs, the other +player can complain using a [problem-report]( +https://github.com/hyperledger/indy-hipe/blob/6a5e4fe2d7e14953cd8e3aed07d886176332e696/text/error-handling/README.md#the-problem-report-message-type) +message, with `explain_l10n.code` set to one of the following values: + +* `not-your-turn`: Offending player took a turn when the other player + expected to do so instead. +* `already-occupied`: Player's move places a marker in a place + where a marker already exists. +* `bad-move`: Player has made a move that makes no sense no matter what + game state applies. For example, attempting to place a mark on row + 7 or column X. +* `move-timed-out`: Player didn't move in time. (Note that this `problem-report` + could be sent in response to a move that arrives to slowly--but could + also be sent proactively, when no move message arrives at all.) + +Game play ends when one player sends a `move` message that manages to +mark 3 cells in a row. Thereupon, it is best practice, but not strictly +required, for the other player to send an acknowledgement in the form +of an `outcome` message. + +```JSON +{ + "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/outcome", + "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 3 }, + "winner": "X", + "comment_ltxt": "You won!" +} +``` + +The `moves` and `ill_be` fields from a `move` message can also, optionally, +be included to further document state. The `winner` field is required. +Its value may be "X", "O", or--in the case of a draw--"none". + +This `outcome` message can also be used to document an abandoned game, +in which case `winner` is `null`, and `comment_ltxt` can be used to +explain why (e.g., timeout, loss of interest). + + About the MESSAGES section: Here we explain the message types, but + also which roles send which messages, what sequencing rules apply, + and how errors may occur during the flow. + +### States + +The states of each player in the protocol evolve according to the +following state machine: + +![state machine](state-machine.png) + +When a player is in the `my move` state, possible valid events include +`send move` (the normal case), `send outcome` (if the player decides +to abandon the game), and `receive outcome` (if the other player +decides to abandon). A `receive move` event could conceivably occur, too-- +but it would be an error on the part of the other player, and would +trigger a `problem-report` message as described above, leaving the +state unchanged. + +In the `receive move` state, `send move` is an impossible event for a +properly behaving player. All 3 of the other events could occur, causing +a state transition. + +In the `wrap up` state, the game is over, but communication with the +outcome message has not yet occurred. The logical flow is `send outcome`, +whereupon the player transitions to the `done` state. + + About the STATES section: Here we explain which states exist for + each participant. We also enumerate the events that can occur, + including errors, and what should happen to state as a result. + In this particular protocol, we only have one state--but in many + protocols, different participants may have different state machines. + This section has been neglected in many early efforts at protocol + definition, and its omission is a big miss. Analyzing all possible + states and events for all participants leads to robustness; skipping + the analysis leads to fragility. + +### Trust and Constraints + +[TODO: ADD THIS SECTION] \ No newline at end of file diff --git a/text/tictactoe-protocol/state-machine.png b/text/tictactoe-protocol/state-machine.png new file mode 100644 index 0000000000000000000000000000000000000000..c97365f8762cd89e93b3ab42f56753e5dff44223 GIT binary patch literal 89695 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

lqr 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 literal 0 HcmV?d00001 diff --git a/text/tictactoe-protocol/tictactoe.png b/text/tictactoe-protocol/tictactoe.png new file mode 100644 index 0000000000000000000000000000000000000000..1e1707533f93dc67b5c81252165fb7c51436b289 GIT binary patch literal 13474 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 Date: Wed, 12 Dec 2018 10:12:12 +0100 Subject: [PATCH 02/61] minor tweak Signed-off-by: Daniel Hardman --- text/tictactoe-protocol/README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/text/tictactoe-protocol/README.md b/text/tictactoe-protocol/README.md index 28f3190f7..e14d34bb7 100644 --- a/text/tictactoe-protocol/README.md +++ b/text/tictactoe-protocol/README.md @@ -70,6 +70,11 @@ communicate. ### Messages +All messages in this protocol are part of the "Tic Tac Toe 1.0" message +family uniquely identified by this DID reference: + + did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0 + The trust ping interaction begins when one party sends a `move` message to the other. It looks like this: @@ -203,7 +208,10 @@ explain why (e.g., timeout, loss of interest). About the MESSAGES section: Here we explain the message types, but also which roles send which messages, what sequencing rules apply, - and how errors may occur during the flow. + and how errors may occur during the flow. The message begins with + an announcement of the identifier and version of the message + family, and also enumerates error codes to be used with problem + reports. ### States From f764e454e724b1f8ffd440c272462ff05f0e5568 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Wed, 12 Dec 2018 10:28:54 +0100 Subject: [PATCH 03/61] Add sample code Signed-off-by: Daniel Hardman --- text/tictactoe-protocol/README.md | 25 +++- text/tictactoe-protocol/ai.py | 85 ++++++++++++ text/tictactoe-protocol/game.py | 153 ++++++++++++++++++++++ text/tictactoe-protocol/handler.py | 44 +++++++ text/tictactoe-protocol/test_tictactoe.py | 145 ++++++++++++++++++++ 5 files changed, 450 insertions(+), 2 deletions(-) create mode 100644 text/tictactoe-protocol/ai.py create mode 100644 text/tictactoe-protocol/game.py create mode 100644 text/tictactoe-protocol/handler.py create mode 100644 text/tictactoe-protocol/test_tictactoe.py diff --git a/text/tictactoe-protocol/README.md b/text/tictactoe-protocol/README.md index e14d34bb7..7f402ea72 100644 --- a/text/tictactoe-protocol/README.md +++ b/text/tictactoe-protocol/README.md @@ -75,7 +75,7 @@ family uniquely identified by this DID reference: did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0 -The trust ping interaction begins when one party sends a `move` message +The protocol begins when one party sends a `move` message to the other. It looks like this: ```JSON @@ -248,4 +248,25 @@ whereupon the player transitions to the `done` state. ### Trust and Constraints -[TODO: ADD THIS SECTION] \ No newline at end of file +Players do not have to trust one another. Messages do not have to be +authcrypted, although anoncrypted messages still have to have a +path back to the sender to be useful. + + About the TRUST AND CONSTRAINTS section: Many protocols have rules + or mechanisms that help parties build trust. For example, in buying + a house, the protocol includes such things as commission paid to + realtors to guarantee their incentives, title insurance, earnest + money, and a phase of the process where a home inspection takes + place. If you are documenting a protocol that has attributes like + these, explain them here. + +# Reference + +A reference implementation of the logic of a game is provided with this +HIPE as python 3.x code. See game.py. There is also a simple hand-coded +AI that can play the game when plugged into an agent, and a set of +unit tests that prove correctness. + + About the REFERENCE section: If the MESSAGES section suppresses + details, here is where to exhaustively describe each field. This + is also the place for multiple examples. diff --git a/text/tictactoe-protocol/ai.py b/text/tictactoe-protocol/ai.py new file mode 100644 index 000000000..6469de082 --- /dev/null +++ b/text/tictactoe-protocol/ai.py @@ -0,0 +1,85 @@ +import game +import random + +def winnable_in_n_moves(line:list, cells, player:str): + # Tells how many moves would get 3-in-a-row on a given + # line, for a given player. Returns None if player + # can't win, or 0 if player has already won. + n = 3 + for i in line: + cell = cells[i] + if cell == player: + n -= 1 + elif cell is None: + pass + else: + return None + return n + +def next_move(g:game.Game, player:str, randomize=True): + ''' + Return the best cell for the player to pick, given current + game state--or None if the game has already been won. + ''' + player = player.upper() + turn = g.whose_turn() + if turn and (player != turn): + raise Exception("It isn't player %s's turn." % player) + cells = g.cells + # First, figure out which line each player is closest + # to winning on. If someone already *has* won, then + # return None. + bests = ([4,None],[4,None]) + candidate_lines = game.LINES + if randomize: + candidate_lines = random.shuffle(candidate_lines[0:]) + for line in game.LINES: + ns = [ + winnable_in_n_moves(line, cells, player), + winnable_in_n_moves(line, cells, game.other_player(player)) + ] + for i in [0,1]: + n = ns[i] + # If someone already won, there is no next move. + if n == 0: + return None + # If this player can't win with this line, then it + # can't be the basis for one of their best choices. + if n is None: + continue + # If this line is closer to winning, or if it's + # equally close to winning compared to a previously + # seen line, but this one includes the center square + # but the previous best does not, pick this line. + if n < bests[i][0] or \ + ((4 in line) and (n == bests[i][0]) and + (bests[i][1] is None or (4 not in bests[i][1]))): + bests[i][0] = n + bests[i][1] = line + # First, prefer something on my best line that blocks + # my opponent on their best line. + choices = None + if bests[0][1] and bests[1][1]: + choices = [x for x in bests[0][1] if x in bests[1][1]] + # If I can't do that, then see who's winning. If me, + # play offense by staying one step ahead (moving toward + # my win). If them, play defense by blocking them. + if not choices: + if bests[0][0] <= bests[1][0]: + line = bests[0][1] + else: + line = bests[1][1] + # If we get here and line is None, then there is no + # way to win the game. Just pick a random cell that's + # left. + if not line: + choices = [x for x in range(9) if cells[x] is None] + else: + choices = [line[x] for x in [0,1,2] if cells[line[x]] is None] + # If the center cell is one of our choices, always pick it. + # Otherwise, return first of equally good alternatives. + if 4 in choices: + choice = 4 + else: + choice = random.choice(choices) if randomize else choices[0] + return game.idx_to_key(choice) diff --git a/text/tictactoe-protocol/game.py b/text/tictactoe-protocol/game.py new file mode 100644 index 000000000..2b61fcec7 --- /dev/null +++ b/text/tictactoe-protocol/game.py @@ -0,0 +1,153 @@ +import re + +_move_split_pat = re.compile(r'\s*,\s*|\s*') + +def key_to_idx(key): + bad_key = (not isinstance(key, str)) or len(key) != 2 + if not bad_key: + c = key[0].upper() + if c not in 'ABC': + bad_key = True + try: + r = int(key[1]) + if r < 1 or r > 3: + bad_key = True + except: + bad_key = True + if bad_key: + raise KeyError('Bad key "%s". Expected A1 through C3.' % key) + return ((r - 1) * 3) + 'ABC'.index(c) + +def idx_to_key(i): + if (not isinstance(i, int)) or i < 0 or i > 8: + raise ValueError('Expected idx between 0 and 8, inclusive.') + return 'ABC'[i % 3] + str(int(1 + (i / 3))) + +def other_player(player:str): + if (not isinstance(player, str)) or (len(player) != 1) or (player not in 'xoXO'): + raise ValueError('Expected X or O.') + if player in 'xX': + return 'O' + return 'X' + + +ROW1 = [0, 1, 2] +ROW2 = [3, 4, 5] +ROW3 = [6, 7, 8] +COL1 = [0, 3, 6] +COL2 = [1, 4, 7] +COL3 = [2, 5, 8] +DIAG1 = [0, 4, 8] +DIAG2 = [2, 4, 6] +LINES = [ROW1, ROW2, ROW3, COL1, COL2, COL3, DIAG1, DIAG2] + +class Game: + def __init__(self): + self.cells = [None]*9 + self.first = None + def __getitem__(self, key): + return self.cells[key_to_idx(key)] + def __setitem__(self, key, x_or_o): + if (not isinstance(x_or_o, str)) or (len(x_or_o) != 1) or (x_or_o not in 'xoXO') : + raise ValueError('Bad value. Expected X or O.') + x_or_o = x_or_o.upper() + if not self.first: + self.first = x_or_o + else: + whose_turn = self.whose_turn() + if x_or_o != whose_turn: + raise ValueError("Bad value. Expected %s, since it that player's turn." % whose_turn) + i = key_to_idx(key) + if self.cells[i] is not None: + raise Exception("Can't reuse square %s. It already has an %s in it." % (x_or_o, self.cells[i])) + self.cells[i] = x_or_o + def whose_turn(self): + if self.first: + xs = self.cells.count('X') + os = self.cells.count('O') + if xs > os: + return 'O' + elif os > xs: + return 'X' + return self.first + def __str__(self): + s = ' A B C\n' + for row in range(3): + s += str(row + 1) + for col in range(3): + c = self.cells[row * 3 + col] + s += ' ' + if c is None: c = '-' + s += c + if row != 2: + s += '\n' + return s + def winner(self): + ''' + Search for a winner. Return None if game isn't over, "X" if player X won, + "O" if player O won, and the empty string if it's a draw. + ''' + draw = True + for line in LINES: + c1 = self.cells[line[0]] + if c1: + c2 = self.cells[line[1]] + c3 = self.cells[line[2]] + if c1 == c2 and c1 == c3: + return c1 + if (not c2) or (not c3): + draw = False + else: + draw = False + if draw: + return '' + def load(self, moves): + '''Load an array of moves like "X:A1" into a game.''' + for m in moves: + self[m[2:]] = m[0] + def dump(self): + '''Convert a game into an array of moves like "X:A1".''' + moves = [] + for i in range(9): + c = self.cells[i] + if c: + moves.append('%s:%s' % (c, idx_to_key(i))) + return moves + +if __name__ == '__main__': + import random + import sys + + import ai + try: + while True: + print("\nYou be Xs, I'll be Os.") + g = Game() + player = random.choice('XO') + if player == 'O': + print("I'll go first.") + w = None + for i in range(9): + if player == 'O': + choice = ai.next_move(g, player) + print('My move: %s' % choice) + g[choice] = player + else: + print(str(g)) + sys.stdout.write('Your move: ') + x = input().strip() + g[x] = 'X' + w = g.winner() + if w: + break + player = other_player(player) + print(str(g)) + if w == 'X': + print('You win!') + elif w == 'O': + print('I win.') + else: + print('Draw.') + except KeyboardInterrupt: + print() + sys.exit(0) \ No newline at end of file diff --git a/text/tictactoe-protocol/handler.py b/text/tictactoe-protocol/handler.py new file mode 100644 index 000000000..49655831c --- /dev/null +++ b/text/tictactoe-protocol/handler.py @@ -0,0 +1,44 @@ +import re + +import game +import ai + +MOVE_MSG_TYPE = 'did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move' +RESULTS_MSG_TYPE = 'did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/results' + +TYPES = [ + MOVE_MSG_TYPE, + RESULTS_MSG_TYPE +] + +def load_game(moves): + + +def handle(wc, agent): + try: + t = wc.obj['@type'] + if t == MOVE_MSG_TYPE: + them = wc.obj.get('ill_be', '') + if them and isinstance(them, str) and len(them) == 1 and them in 'XO': + them = them.strip().upper() + else: + raise Exception('Expected "ill_be" to contain either "X" or "O".') + moves = wc.obj.get('moves', []) + if not isinstance(moves, list) or len(moves) > 9: + raise Exception('Expected "moves" to be a list of at most 9 items.') + g = game.Game() + g.load(moves) + w = g.winner() + if w: + agent.trans.send('{"@type": "result", "outcome": "%s won."}') + me = game.other_player(them) + if g.whose_turn() + + if them == 'X': + g.load(wc.obj['moves']) + choice = ai.next_move(g, me) + g[choice] = me + agent.trans.send('{"@type": "%s"}' % MOVE_MSG_TYPE, wc.sender) + except Exception as e: + agent.trans.send('{"@type": "problem-report", "explain_ltxt": "%s"}', wc.sender) + return True \ No newline at end of file diff --git a/text/tictactoe-protocol/test_tictactoe.py b/text/tictactoe-protocol/test_tictactoe.py new file mode 100644 index 000000000..dae9b262b --- /dev/null +++ b/text/tictactoe-protocol/test_tictactoe.py @@ -0,0 +1,145 @@ +import unittest +import sys +import os +import random + +sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..')) +import game +import ai + +class GameTest(unittest.TestCase): + def setUp(self): + self.game = game.Game() + def test_first(self): + self.assertEqual(None, self.game.first) + self.game['b3'] = 'x' + self.assertEqual('X', self.game.first) + def test_turns_enforced(self): + self.game['b1'] = 'o' + ok = True + try: + self.game['b2'] = 'o' + ok = False + except: + pass + if not ok: + self.fail('Expected game not to allow two turns in row by same person.') + def test_get_item_from_empty(self): + self.assertEqual(None, self.game['a1']) + def test_simple_set_item(self): + self.game['a1'] = 'x' + self.assertEqual('X', self.game['a1']) + self.game['c3'] = 'o' + self.assertEqual('O', self.game['c3']) + self.game['b2'] = 'X' + self.assertEqual('X', self.game['b2']) + self.game['a3'] = 'O' + self.assertEqual('O', self.game['a3']) + def test_set_item_with_bad_value(self): + bad_values = ['',None,'*','0',1,0] + for bad in bad_values: + self.game = game.Game() # reset state + with self.assertRaises(ValueError): + self.game['a1'] = bad + def test_bad_key(self): + bad_keys = ['1a','a4','d1','a1 ',' a1','a0','a01',11,None,'a12','aa1'] + for bad in bad_keys: + with self.assertRaises(KeyError): + self.game[bad] + def test_cant_clobber_existing_cell(self): + self.game['c3'] = 'o' + with self.assertRaises(Exception): + self.game['c3'] = 'x' + def test_winner1(self): + self.game['b2'] = 'o' + self.game['a2'] = 'x' + self.game['b1'] = 'o' + self.game['b3'] = 'x' + self.game['c3'] = 'o' + self.assertEqual(None, self.game.winner()) + def test_winner2(self): + self.game['a1'] = 'x' + self.game['b2'] = 'o' + self.game['b1'] = 'x' + self.game['a2'] = 'o' + self.game['c2'] = 'x' + self.assertEqual(None, self.game.winner()) + self.game['c3'] = 'o' + self.game['c1'] = 'x' + self.assertEqual('X', self.game.winner()) + def test_bad_idx_to_key(self): + bad_idx = [0,9,-1,'0',None,'a','a1'] + for bad in bad_idx: + with self.assertRaises(ValueError): + game.idx_to_key(bad_idx) + def test_good_idx_to_key(self): + def all_good_idx(): + for r in '123': + for c in 'ABC': + yield c + r + expected = 0 + for idx in all_good_idx(): + self.assertEqual(idx, game.idx_to_key(expected)) + expected += 1 + def test_good_other_player(self): + opposites = 'xXoO' + for player in opposites: + opposite = opposites[(opposites.index(player) + 2) % 4].upper() + self.assertEqual(opposite, game.other_player(player)) + def test_bad_other_player(self): + bad_players = ['fred',None,'',0,1,-1,'xx','xo','Ox'] + for bad in bad_players: + with self.assertRaises(ValueError): + game.other_player(bad) + def test_load_and_dump(self): + moves = 'X:B2,O:C3,X:B1,O:B3,X:A3'.split(',') + self.game.load(moves) + dumped = self.game.dump() + self.assertEqual(len(dumped), len(moves)) + for m in moves: + self.assertTrue(m in dumped) + +class AITest(unittest.TestCase): + def test_line_winnable(self): + for line in game.LINES: + cells = [None]*9 + self.assertEqual(3, ai.winnable_in_n_moves(line, cells, 'x')) + self.assertEqual(3, ai.winnable_in_n_moves(line, cells, 'o')) + cells[line[0]] = 'X' + self.assertEqual(2, ai.winnable_in_n_moves(line, cells, 'X')) + self.assertEqual(None, ai.winnable_in_n_moves(line, cells, 'O')) + cells[line[0]] = 'O' + cells[line[1]] = 'O' + self.assertEqual(None, ai.winnable_in_n_moves(line, cells, 'X')) + self.assertEqual(1, ai.winnable_in_n_moves(line, cells, 'O')) + cells[line[0]] = 'X' + cells[line[1]] = 'X' + cells[line[2]] = 'X' + self.assertEqual(0, ai.winnable_in_n_moves(line, cells, 'X')) + self.assertEqual(None, ai.winnable_in_n_moves(line, cells, 'O')) + def test_first_move(self): + g = game.Game() + self.assertEqual('B2', ai.next_move(g, 'x')) + def test_head_to_head(self): + # Make the AI play against itself a bunch of times. Randomize which + # side starts. Every game should take a full 9 moves, and every gamee + # should end with a draw. + for i in range(100): + g = game.Game() + player = random.choice('XO') + n = 0 + while True: + cell = ai.next_move(g, player) + g[cell] = player + n += 1 + w = g.winner() + if w: + if w != g.first or n != 9: + self.fail('Game won unexpectedly:\n%s.' % str(g)) + break + if n == 9: + break + player = game.other_player(player) + +if __name__ == '__main__': + unittest.main() From e10df1882c419cbf02ada73e1bd590407929289d Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Wed, 12 Dec 2018 10:32:43 +0100 Subject: [PATCH 04/61] tweak unit tests Signed-off-by: Daniel Hardman --- text/tictactoe-protocol/.gitignore | 1 + text/tictactoe-protocol/test_tictactoe.py | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 text/tictactoe-protocol/.gitignore diff --git a/text/tictactoe-protocol/.gitignore b/text/tictactoe-protocol/.gitignore new file mode 100644 index 000000000..bee8a64b7 --- /dev/null +++ b/text/tictactoe-protocol/.gitignore @@ -0,0 +1 @@ +__pycache__ diff --git a/text/tictactoe-protocol/test_tictactoe.py b/text/tictactoe-protocol/test_tictactoe.py index dae9b262b..4ccbd5528 100644 --- a/text/tictactoe-protocol/test_tictactoe.py +++ b/text/tictactoe-protocol/test_tictactoe.py @@ -3,7 +3,6 @@ import os import random -sys.path.append(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..')) import game import ai From 5c2058138cd39b2f7c1ebbc93dc7e18fd2b2cd6a Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Wed, 12 Dec 2018 10:34:54 +0100 Subject: [PATCH 05/61] Clarify Reference section Signed-off-by: Daniel Hardman --- text/tictactoe-protocol/README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/text/tictactoe-protocol/README.md b/text/tictactoe-protocol/README.md index 7f402ea72..368dfe743 100644 --- a/text/tictactoe-protocol/README.md +++ b/text/tictactoe-protocol/README.md @@ -263,10 +263,14 @@ path back to the sender to be useful. # Reference A reference implementation of the logic of a game is provided with this -HIPE as python 3.x code. See game.py. There is also a simple hand-coded -AI that can play the game when plugged into an agent, and a set of -unit tests that prove correctness. +HIPE as python 3.x code. See [game.py](game.py). There is also a simple +hand-coded AI that can play the game when plugged into an agent (see +[ai.py](ai.py), and a set of unit tests that prove correctness (see +[test_tictactoe.py](test_tictactoe.py). + +The game can be played interactively by running `python game.py`. About the REFERENCE section: If the MESSAGES section suppresses details, here is where to exhaustively describe each field. This - is also the place for multiple examples. + is also the place for multiple examples of message flows, and + it is a plays for reference implementations. From 08540cf937068aefa5fc3ec2e7cb40b289f2e039 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Thu, 13 Dec 2018 06:36:59 +0100 Subject: [PATCH 06/61] Fix usage of ill_be attr Signed-off-by: Daniel Hardman --- text/tictactoe-protocol/README.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/text/tictactoe-protocol/README.md b/text/tictactoe-protocol/README.md index 368dfe743..e06d98c15 100644 --- a/text/tictactoe-protocol/README.md +++ b/text/tictactoe-protocol/README.md @@ -116,9 +116,9 @@ Once the initial `move` message has been sent, game play continues by each player taking turns sending responses, which are also `move` messages. With each new message the `move` array inside the message grows by one, ensuring that the players agree on the current accumulated -state of the game. The `ill_be` field is not required after the initial -message, but if present, it must accurately reflect the role of the -message sender, and would thus alternate values between `X` and `O`. +state of the game. The `ill_be` field is still required and must +accurately reflect the role of the message sender; itthus alternates +values between `X` and `O`. Subsequent messages in the game use the [message threading]( https://github.com/hyperledger/indy-hipe/pull/30) mechanism where the @@ -134,7 +134,8 @@ suppressing all fields except what's required: { "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 0 }, - "moves": ["X:B2", "O:A1"] + "moves": ["X:B2", "O:A1"], + "ill_be": "O" } ``` @@ -147,7 +148,8 @@ it has `seqnum` = 0. { "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 1 }, - "moves": ["X:B2", "O:A1", "X:A2"] + "moves": ["X:B2", "O:A1", "X:A2"], + "ill_be": "X" } ``` @@ -158,7 +160,8 @@ This is the second message in the thread by `player_x`. { "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 1 }, - "moves": ["X:B2", "O:A1", "X:A2", "O:B1"] + "moves": ["X:B2", "O:A1", "X:A2", "O:B1"], + "ill_be": "O" } ``` From 386802d91cf9b231f021dd48e1dd1e88e14ab17b Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Tue, 18 Dec 2018 21:31:43 -0700 Subject: [PATCH 07/61] Add message catalog Signed-off-by: Daniel Hardman --- text/tictactoe-protocol/catalog.json | 11 +++++++++++ text/tictactoe-protocol/tictactoe.@l10n.json | 0 2 files changed, 11 insertions(+) create mode 100644 text/tictactoe-protocol/catalog.json create mode 100644 text/tictactoe-protocol/tictactoe.@l10n.json diff --git a/text/tictactoe-protocol/catalog.json b/text/tictactoe-protocol/catalog.json new file mode 100644 index 000000000..b0735629f --- /dev/null +++ b/text/tictactoe-protocol/catalog.json @@ -0,0 +1,11 @@ +{ + "not-your-turn": { + "en": "You moved when it was my turn." + }, + "already-occupied": { + "en": "You can't place a mark in cell {where}. It is already occupied." + }, + "bad-move": { + "en": "Move \"{move}\" makes no sense. Expected a string like \"X:A1"\ or \"O:C3\"." + } +} \ No newline at end of file diff --git a/text/tictactoe-protocol/tictactoe.@l10n.json b/text/tictactoe-protocol/tictactoe.@l10n.json new file mode 100644 index 000000000..e69de29bb From 55b5e56972a87ce9be7d43d657a7b0d00806ebcd Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Tue, 18 Dec 2018 21:32:29 -0700 Subject: [PATCH 08/61] Rename @l10n file Signed-off-by: Daniel Hardman --- text/tictactoe-protocol/{tictactoe.@l10n.json => @l10n.json} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename text/tictactoe-protocol/{tictactoe.@l10n.json => @l10n.json} (100%) diff --git a/text/tictactoe-protocol/tictactoe.@l10n.json b/text/tictactoe-protocol/@l10n.json similarity index 100% rename from text/tictactoe-protocol/tictactoe.@l10n.json rename to text/tictactoe-protocol/@l10n.json From a0d57d1f589945de58d8f7711b081500026b8713 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Tue, 18 Dec 2018 21:37:17 -0700 Subject: [PATCH 09/61] fix escape sequence in json Signed-off-by: Daniel Hardman --- text/tictactoe-protocol/catalog.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/tictactoe-protocol/catalog.json b/text/tictactoe-protocol/catalog.json index b0735629f..a15eca90c 100644 --- a/text/tictactoe-protocol/catalog.json +++ b/text/tictactoe-protocol/catalog.json @@ -6,6 +6,6 @@ "en": "You can't place a mark in cell {where}. It is already occupied." }, "bad-move": { - "en": "Move \"{move}\" makes no sense. Expected a string like \"X:A1"\ or \"O:C3\"." + "en": "Move \"{move}\" makes no sense. Expected a string like \"X:A1\" or \"O:C3\"." } } \ No newline at end of file From 881ca1ac73fe38fe61bdde84522ac0c03df62a2b Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Tue, 18 Dec 2018 22:16:30 -0700 Subject: [PATCH 10/61] Polish with @l10n and catalog Signed-off-by: Daniel Hardman --- text/tictactoe-protocol/@l10n.json | 8 ++ text/tictactoe-protocol/@l10n.png | Bin 0 -> 19970 bytes text/tictactoe-protocol/README.md | 123 ++++++++++++++++++--------- text/tictactoe-protocol/catalog.json | 4 +- text/tictactoe-protocol/catalog.png | Bin 0 -> 30967 bytes 5 files changed, 94 insertions(+), 41 deletions(-) create mode 100644 text/tictactoe-protocol/@l10n.png create mode 100644 text/tictactoe-protocol/catalog.png diff --git a/text/tictactoe-protocol/@l10n.json b/text/tictactoe-protocol/@l10n.json index e69de29bb..37a724b77 100644 --- a/text/tictactoe-protocol/@l10n.json +++ b/text/tictactoe-protocol/@l10n.json @@ -0,0 +1,8 @@ + +{ + "@l10n": { + "localizable": ["comment"], + "catalogs": ["https://github.com/hyperledger/indy-hipe/blob/a0d57d1f589945de58d8f7711b081500026b8713/text/tictactoe-protocol/catalog.json"] + } +} + diff --git a/text/tictactoe-protocol/@l10n.png b/text/tictactoe-protocol/@l10n.png new file mode 100644 index 0000000000000000000000000000000000000000..32456233fda5fc2f217727ce0024f9ab597ccd2f GIT binary patch literal 19970 zcmeIaXH-;6)-a5qqKF^@B1o1fp~)FqvVi0ySwfSck(^Oc5Q&mAk~2tXa!`?+l$@KK zp~=vM?(cy2&fIxso_XI{>wEu=YuT&LsU50z?Oi)m9fDMpWbfjT;b353+?9JKrG|ll z2?N@ew{8Nzh_qV?7#O$dJvCl9s~NjdJ2*nkt!yFG&K?dBYKXg)IR=LNL~)!= zJM=!07-s6B0A4CV)0=Qa=~yCZ|E9ZXqj8yDG}C=14J`;m>VB!;%nDV5JZ!JBgn>QM zofm3&lZw@+v8hiGc6{N}o7%Oqt~^SGJW`ocThecC>Ou;wd^Q0Ic z)$!T)#bHA3AVhtuVzR6qxj%gCxYn!5@0{L4+BdD9N6c*~O?@{Dir)beJk{^N06Mu3 z(g>EIRNehxjSIu;ejU?|liQ+3g^v_FqD9iAv-|HM810j@%A3M(2kya z?0zPbZ*->K8E>jxN|9|sHmt;u&{R2obYzEo+O09y430Z|dw&gzd{At7j3txJu2QJa z4ma&YG@$yb%Q^S^rgXUcZ)Erhq{0o(h1-wcY=;i?3P$QI_7cB}$+P-?YjHlM9)k|9 ztaO$HKXz|wIb9(Bs&#J@nizT`jHfvuUKE{Id^)dRTbg^6RXWm92gZt^UEaPP#d3?T z6K2sVr|>JeGxJS9^`4qu0(FEJNEl3FYfbz${ZV|91yA#FtYH(oBpb%BLX8__rC48d zH-^IbG6Q5v8$}!4)+UO*sMNCMNC;wP^U^hwT!}S#T`07Qb@(}XxvS?|S%^jq^r`sW zsQl%yCGk@!r#RbKEBg4(qVorH`pcNohP8~!oyYfhUB_JpQF>KklU0aUd+E_i!WSLC zOxycwh9-)ur+t^!VHYE@3FA? z*WAP;a=zUYxilhAO%hKJ;*kb@j`ez7;Y5A&?bhM|6csj&zlb8L&aFn@uHJ)3cwyF| zu^pA49*b{>*Ie9$i5g1hgP#6+|7lPI^uu*H*Ra6LFs

*ype&6K6E*-e=Z|S4GFS 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 literal 0 HcmV?d00001 diff --git a/text/tictactoe-protocol/README.md b/text/tictactoe-protocol/README.md index e06d98c15..8df4972ed 100644 --- a/text/tictactoe-protocol/README.md +++ b/text/tictactoe-protocol/README.md @@ -56,12 +56,11 @@ for any reason. Games can last any amount of time. ### Roles -There are two parties in a tic-tac-toe game. One of them becomes -`player_x` for the duration of the protocol; the other is `player_o`. -These names correspond to the marks they place. There are no special -requirements about who can be a player. The parties do not need to be -trusted or even known to one another, either at the outset or as the -game proceeds. No prior setup is required, other than an ability to +There are two parties in a tic-tac-toe game, but only one role, `player`. +One player places 'X' for the duration of a game; the other places 'O'. +There are no special requirements about who can be a player. The parties do +not need to be trusted or even known to one another, either at the outset or +as the game proceeds. No prior setup is required, other than an ability to communicate. About the ROLES section: Here we name the roles in the protocol, @@ -82,16 +81,16 @@ to the other. It looks like this: { "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", "@id": "518be002-de8e-456e-b3d5-8fe472477a86", - "ill_be": "X", + "me": "X", "moves": ["X:B2"], - "comment_ltxt": "Let's play tic-tac-to. I'll be X. I pick cell B2." + "comment": "Let's play tic-tac-to. I'll be X. I pick cell B2." } ``` `@id` is required here, as it establishes a [message thread](https://github.com/hyperledger/indy-hipe/pull/30) that will govern the rest of the game. -`ill_be` ("I'll be") tells which mark (X or O) the sender is placing. +`me` tells which mark (X or O) the sender is placing. It is required. `moves` is optional in the first message of the interaction. If missing @@ -103,7 +102,7 @@ They identify a mark to be placed ("X" or "O") and a position in the 3x3 grid. The grid's columns and rows are numbered like familiar spreadsheets, with columns A, B, and C, and rows 1, 2, and 3. -`comment_ltxt` is optional and probably not used much, but could be a way +`comment` is optional and probably not used much, but could be a way for players to razz one another or chat as they play. It follows the conventions of [localized messages]( https://github.com/hyperledger/indy-hipe/pull/64) @@ -116,8 +115,8 @@ Once the initial `move` message has been sent, game play continues by each player taking turns sending responses, which are also `move` messages. With each new message the `move` array inside the message grows by one, ensuring that the players agree on the current accumulated -state of the game. The `ill_be` field is still required and must -accurately reflect the role of the message sender; itthus alternates +state of the game. The `me` field is still required and must +accurately reflect the role of the message sender; it thus alternates values between `X` and `O`. Subsequent messages in the game use the [message threading]( @@ -135,12 +134,12 @@ suppressing all fields except what's required: "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 0 }, "moves": ["X:B2", "O:A1"], - "ill_be": "O" + "me": "O" } ``` -This is the first message in the thread that's sent by `player_o'; hence -it has `seqnum` = 0. +This is the first message in the thread that's sent by the `player` placing +"O"; hence it has `seqnum` = 0. ##### Message/Move 3 @@ -149,11 +148,11 @@ it has `seqnum` = 0. "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 1 }, "moves": ["X:B2", "O:A1", "X:A2"], - "ill_be": "X" + "me": "X" } ``` -This is the second message in the thread by `player_x`. +This is the second message in the thread by the player placing "X". ##### Message/Move 4 ```JSON @@ -161,7 +160,7 @@ This is the second message in the thread by `player_x`. "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 1 }, "moves": ["X:B2", "O:A1", "X:A2", "O:B1"], - "ill_be": "O" + "me": "O" } ``` @@ -174,18 +173,8 @@ the moves, regardless of the order in which they were made. If a player makes an illegal move or another error occurs, the other player can complain using a [problem-report]( https://github.com/hyperledger/indy-hipe/blob/6a5e4fe2d7e14953cd8e3aed07d886176332e696/text/error-handling/README.md#the-problem-report-message-type) -message, with `explain_l10n.code` set to one of the following values: - -* `not-your-turn`: Offending player took a turn when the other player - expected to do so instead. -* `already-occupied`: Player's move places a marker in a place - where a marker already exists. -* `bad-move`: Player has made a move that makes no sense no matter what - game state applies. For example, attempting to place a mark on row - 7 or column X. -* `move-timed-out`: Player didn't move in time. (Note that this `problem-report` - could be sent in response to a move that arrives to slowly--but could - also be sent proactively, when no move message arrives at all.) +message, with `explain.@l10n.code` set to one of the values defined +in the Message Catalog section (see below). Game play ends when one player sends a `move` message that manages to mark 3 cells in a row. Thereupon, it is best practice, but not strictly @@ -197,16 +186,16 @@ of an `outcome` message. "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/outcome", "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 3 }, "winner": "X", - "comment_ltxt": "You won!" + "comment": "You won!" } ``` -The `moves` and `ill_be` fields from a `move` message can also, optionally, +The `moves` and `me` fields from a `move` message can also, optionally, be included to further document state. The `winner` field is required. Its value may be "X", "O", or--in the case of a draw--"none". This `outcome` message can also be used to document an abandoned game, -in which case `winner` is `null`, and `comment_ltxt` can be used to +in which case `winner` is `null`, and `comment` can be used to explain why (e.g., timeout, loss of interest). About the MESSAGES section: Here we explain the message types, but @@ -218,7 +207,7 @@ explain why (e.g., timeout, loss of interest). ### States -The states of each player in the protocol evolve according to the +The states of each `player` in the protocol evolve according to the following state machine: ![state machine](state-machine.png) @@ -239,15 +228,15 @@ In the `wrap up` state, the game is over, but communication with the outcome message has not yet occurred. The logical flow is `send outcome`, whereupon the player transitions to the `done` state. - About the STATES section: Here we explain which states exist for - each participant. We also enumerate the events that can occur, - including errors, and what should happen to state as a result. - In this particular protocol, we only have one state--but in many + About the STATES section: Here we explain which states exist for each + role. We also enumerate the events that can occur, including errors, + and what should happen to state as a result. In this protocol, we only + have one role, and thus only one state machine matrix. But in many protocols, different participants may have different state machines. This section has been neglected in many early efforts at protocol definition, and its omission is a big miss. Analyzing all possible - states and events for all participants leads to robustness; skipping - the analysis leads to fragility. + states and events for all roles leads to robustness; skipping the + analysis leads to fragility. ### Trust and Constraints @@ -277,3 +266,57 @@ The game can be played interactively by running `python game.py`. details, here is where to exhaustively describe each field. This is also the place for multiple examples of message flows, and it is a plays for reference implementations. + +### Localization + +The only localizable field in this message family is `comment` on both `move` +and `outcome` messages. It contains ad hoc text supplied by the sender, +instead of a value selected from an enumeration and identified by `code` for +use with message catalogs. This means the only approach to localize `move` or +`outcome` messages is to submit `comment` fields to an automated translation +service. Because the locale of tictactoe messages is not predefined, each +message must be decorated with `@l10n.locale` to make automated translation +possible. + +There is one other way that localization is relevant to this protocol: in error +messages. Errors are communicated through the general [problem-report]( +https://github.com/hyperledger/indy-hipe/blob/6a5e4fe2d7e14953cd8e3aed07d886176332e696/text/error-handling/README.md#the-problem-report-message-type) +message type rather than through a special message type that's part of the +`tictactoe` family. However, we define a catalog of tictactoe-specific error codes +below to make this protocol's specific error strings localizable. + +Thus, all instances of this message family carry localization metadata +in the form of an implicit `@l10n` decorator that looks like this: + +[![@l10n](@l10n.png)](@l10n.json) + +This JSON fragment is checked in next to the narrative content of this +HIPE as [@l10n.json](@l10n.json), for easy machine parsing. + +Individual messages can use the `@l10n` decorator to supplement or override +these settings. + +For more information about localization concepts, see the [HIPE about localized +messages](https://github.com/hyperledger/indy-hipe/blob/318f265d508a3ddf1da7d91c79ae4ae27ab9142b/text/localized-messages/README.md). + +### Message Catalog + +To facilitate localization of error messages, all instances of this message +family assume the following catalog in their `@l10n` data: + +[![catalog](catalog.png)](catalog.json) + +When referencing this catalog, please be sure you have the correct version. The +official, immutable URL to this version of the catalog file is: + + https://github.com/hyperledger/indy-hipe/blob/a0d57d1f589945de58d8f7711b081500026b8713/text/tictactoe-protocol/catalog.json + +This JSON fragment is checked in next to the narrative content of this HIPE +as [catalog.json](catalog.json), for easy machine parsing. The catalog +currently contains localized alternatives only for English. Other language +contributions would be welcome. + +For more information, see the [Message Catalog section of the localization HIPE]( +https://github.com/hyperledger/indy-hipe/blob/318f265d508a3ddf1da7d91c79ae4ae27ab9142b/text/localized-messages/README.md#message-codes-and-catalogs +). + diff --git a/text/tictactoe-protocol/catalog.json b/text/tictactoe-protocol/catalog.json index a15eca90c..e67acf158 100644 --- a/text/tictactoe-protocol/catalog.json +++ b/text/tictactoe-protocol/catalog.json @@ -1,3 +1,4 @@ + { "not-your-turn": { "en": "You moved when it was my turn." @@ -8,4 +9,5 @@ "bad-move": { "en": "Move \"{move}\" makes no sense. Expected a string like \"X:A1\" or \"O:C3\"." } -} \ No newline at end of file +} + diff --git a/text/tictactoe-protocol/catalog.png b/text/tictactoe-protocol/catalog.png new file mode 100644 index 0000000000000000000000000000000000000000..f4248ee6ad1418c386bbcaa52604964a5df7121e GIT binary patch literal 30967 zcmeFXbyS?ovNt@01PFnU0KqLlfZ*x1hn@f_rcX?hsrDcXxNUc?Yu3 zKKp!k-+RBi-uM1@Sc_TxbXQkbS66j+)vx_!rA3etaS#Cj0J4~4*)n!7sh?5B&k6bgw!C?ePwE1 zvjBjPUe>#4W*(1?u2s%eD$2-b#o@jBAo!u>{^$btz9VB*QNS$S^_0MIR8Az>W$@C` zWnQ5GymK=7ZvA3gW&&2zg&ZI;Q*$^=x@EOnn(5T^{Csnui@Cv-ev23Is>yt_sco|%dHO*2LU6MaKdU(OYJ*O2 zIe?GX?b}>~$Uy~oOMg!=&+kI^C~5hs?E_ivT20{z`aMp{n&Zplp4V*O@CVhn?L|p| z>8=V=UTdkq)$j{g@iT+kFFh3G9&)s}qlmF5RSlU2b4LYL zkw1^cg8KZshrL$lz=w5#?rT?O>CQa13ddUG_iX{LKrl|_Qr8t#27q*qEql-Z-~?$w z>+aq{>jgq3d0!8Vfm+IYC5Z*=d~SBkjtXUg+bH3P6X|AO<+{>%#ScX1iYnXh#Rno# zEfo*rce!J~Vf-eJOcwRMtBT?Y1i#h4+ZW=Qohk#B5a_tc%jZ9*E&mcQ zFgMP52%aX{WBNQ9G(9_^piV;b;U~6~%?pKQ0Rws2njMXsRK9Md`tNK)ah2@(9Ca5? zNt3jz@JuR%&S!4dKP&yBI4&AfxzIKpxT~2uoqPJpvQQ5PXaQSxaxY?Bs%a|BR5w&~ zDSp<2S-~Q2B`zstw(^a^yVrI+l1zRXx%5qfjPF*B8Q)UA)e5I%>m4+P|5Z9pmYA`@ z&sb7YUAdWU_wub8PbhAFN|nIk#}4rccrJyRR&UkF;7Ae4hMmz-5HBgVka-v2X>y?0 zwCM*);|9iW@Gavo^gY>KhC&73;KH?XNxyK{=qZm&`HbdnFL;Fz*6o^5Vv;D*k$Fav zJ(=EC*CMoUG=lnah~Rg8d}e>0*H+vIA)knlKU3FzU3y!*9ng>V74cOY)YhE|#L~ zO2bZ|;4@eBGPxDLHxtWGiVEeJQ;sMsQ_YaEpT5N??n~<3{cfK*@^{gGWGNRKbGCI$ zq=7l9<<#t7&+AU6ofojfcj+z6^WvEVf-a1bvUxiD0G3DGGf{`tj=9%I{GXv}+_6wzYa?t@Hm z=3U%V$M3WNksL+4ZxOS+FU{Y?`RLTNnzK;oC5@XfH*UL~j*7yUmc12Txh7qEUmVZo zJ^AEUmsv(8%hyrlacnVX?3;5dv09}df7>jeu9>kI)tjb(8T=V#nUnWQ9!<&$WFPBq zq|Z4-vjWf96QjfIdGpj!x-*scXY=LX9ifx&mj}ow>sLSP(8^>F9<9tNa(NrUAZ69L zDr)YXQ1FaIF*UA3NoF6`Q`jSy`kPyDScaUz9{uG$`Oc7L@tsdP;inQJES~w{S6-~> zme`7@z5%+w%2k%0+m)x`$_56%E4?vqq;1(XMvgG>La_CT#T_foKM?ddD|k0%PGxYh zq_<}!IBWH#{Tv(jJ^-KGRgOm-aYR`Qy{joy&miXI$TED|YGz%h!t)7VI$KYi>gLzp z;^Tl<$B8zwX|*F`%vlj3!EHO3GBP%$tjeMZd(BJq;WQLgXIkh32E#)@)Vb`g<}EEL zV`9w1kSaz|nC2<0Tm|uJ>P+PK!2#67YrU?l9%v1vAJ>0r3X2sqkn3kgcv_L^ftCa} zLycZja5$Tjwk(#`_nDoOObp)B6S#bHiXKhx@P2cy|uVxY6eyt*N!>ZyBzz7E7 zsY+*BsSzSO=EWJ$rfWk(nX@mQP$^?BP}it@ji=lQs&w z>|6&ctmc_Ig`(KhPC=>9G6)T@6BAJb_u&QftU(eee3AMNp9{g;wLbe_^srOur)otVaB76`nT-)^3MIrquTyqE_Eng z|L&I*gTciJsTTf_wbn;?2XsE*oU#j86+#nmF<75b^0C*(DAyw_{B=i~hsExjf-YA} z>C=e!7P#d4;gPe5xiih|AGtO&z8+E#xVHF~ljOZ4oW)QI&VI4PQIz;ZGb|%cNfHOh zTzVkNahuRU@}y#w(`FE>8FRt76L*o5-NG_9MP}|klEA30KC4RI$iC~%B^Eu>Ncl0s z{LWXkq^&_w?Q2Fvr|`3NDcsT{B{ZuX;5Gvnsu$@2x<(eqH`-)o<$3A<<>Wn1x} zdhG>O;a0BdVol@}eky*%Va|Rb6}aiIo_FotENWbFSBXx9#D?oiIR3D$FTZMWUv+Hi zaQKjyt{BGGKD`%fkN8yP2uq!%#q&Zk@VQAJ0+s0oCRvtyksi$)g5KRzgUceir?tuq zE@N)LQe{-MJZCmDjs(Q~7Qeg_CYtB}Bx`GdVN~<7G(U8!Q{KrQ*b;u0q$Rl#L`Yc$ zN}M#=m)67Nir1f^k7B|swd3(oX^uU{zk)-oZl37%XR2DhlT;+do29p+xZqmLs%TsO zDP+oP&Q)toeuJg)kqQn~sYIz9=FA~1vrR}woYf4=muzCzFnn?d?1)F>N}5v+`{Q1L zwbHh8k$=AsrYA(My&YK(Ci3H}!t@Ww_DKHNCrtTl-4;(Ak!?HaaK6sGbn$Ngc-Xbz z!&fhGXYlo15oFoJ@jZXeZVZQI*Cif*C__YqJk0li6fuk<-cuZPGtp15@f9ZRU5cRe zZ2wH^Ruyraw#aHalnq2I8VSI|uvNjYo;P1?qfzGlXr7Xw!q}IsOV@&s* zVRos4DdW=@UVIv`G}J1d5b32mSbhK7)J7xJr@nBTL6Rf=u(bLi76L5$_lXmOBIpG8 zA0@fEOJ4}RcyH`IV~N`B{!Db<tg{fMebWBt7(Vv#hltXll@Me; z#&&0Ckm#0lKEa}N2{T^D61^9OV@veNhY_U`f}|G_{ZHAi9A@k|hzDhvY&t2vB>M-i z2MsE*F+)nVU%Gc|LuUNx72tm%LY{U^IDlC`)?NbuC~Zd2fJRwLl2aFCMyss{(gD&s zm{~vr9sq!w&%r`l*92%oqyscCGUp*asB0o7GScHA{>&mpFJ&PBG&B-*vH~hNNh|6) zndoxp5%cjPayxKB8JGcWw22(dOwFx19e9Wz`Eo+b57l(UM2{pkCOpK-QnEw>AS)md zGc7YMJ&llqksTv3FCr1Qm7YGQyrA$OETCUJ#D+FD7Myf+_V)I)_Dr-OD+4+P4h{}F zdPX`%Mj9vujkTk>jkW`gxi!fHi{Cs1f!4ZKMiw?kAakMzp4vJfTN@r?VrVZKFpg2K``$&Id|B$4F1lPD9T~!^lDR*Z$B}DXBkun_K^(MW{aM z9JDRy7-;F~%*_6!hqaB6-9N|s+aA`6(72LL9%v1+wbBI&*#XUMNd7vgg{iIeU&pky z20m0h%5AErPX`t1apb@D5fPJ;{j<-58V!uhEFOD2Q2&)uPxntc3tKDGM;bj{I-n`g z3@V5&_Be#fA;v7`8>4z2SK32{XO+R^z|sqqh2`$LAtgNgNh0A5I@MvsRzTUVQrmFbby!#Z$&lojJ4 zW~8P6XN|0>wv9f>%8Z9tN?VsmM&X|=ibiHY1sm-Ltue4LvoLV5GO;r<(bKcC|Ca5M zp%T!_8fxVaOd05DnIC)W>2eA~Ich_V&B#pK07z$HZt&Rfuq>RiMh-wzWkD!&^WQxg zm>GWe`)Bi)zce#({FW9vVNL-nptcRjN)ZGyW}_U8Zp`23UfPc9#=Z0tc+CNfqsI>ta|19wYD8l?{WR0di>p_Yp88*0EBMIfB54+>W%)!)`9vutjx?%Ptj)3(Whb7XXk*L zIg>68J-x0zJEI;ukc0lWJ^jhu8l-PyuWbeVXaMy<=sH9F?{S@pD1Mvh`+pV2-Vpd; zfAkFOGz^S14D5=GjGPQioX{}8x{ z4<@T%Yhht(1ho2BW&Oi={u8>t^#8+9|GVygCHvi50A%3^^>#xW8GG~pa`?X?{LMkq zNEhl^p#Mtrzmoh`%U=#GsLa3Xpa&uJT&4T-VEw~X9=z#)@$U~4{9haa%KG1f{Ezhe zZ*~1!UH>Bu{EvwLZC(FX*Z)WZ|0CjmTi5?Hbs_#UGzXePFMsyXz?<&pHydcs4yPj_ zBKR1-1Fi(>+@YoC7NTFQ0RW755C1S?@}!5*N_ZPFDIxe}B(!J9PozMTBLDyqKuqwX zqQms=oTH1vr}@hxnTYJInCu(G^76r$tS+SzPwFR#h}<4QPgdYaQt2~DI4MFXn0Qy3 zGrkRMX7I%t0OBn_K7DP8t|wMl2y)Vz}Yz?)7se@ko9T{w9!Sqel6~ zy!HN7vNfo&f#X8MXUw>Q*!vYf!dpSi%&1ogZy(BHzCI5%-eG#m|5{O9RC9L=UpCdZ z-k-o>wTj>chpaP@$btIyvD*+!#M0=fqEewsyDF$bNKnvQP~@?{O_Clv7gxeihDc;$ zB6axd2i~tH8kDSkRaI0h?CoQJJd%AYibcXjf{PNb$&vouFHNtyq$I4ooVn6`u4l2u z>mB7|*Yq9I))$zxdY6YwL0Al)Vv%HGiofSDA?90UHY03j$9i*dV6f5=jQZxcXtojB z9)p9j+0sek`uf>|LcjSJ>S2Az85tTKC6)UvlsX;uOJwA%)Krg-4q^YGM=flsbX(}? z5JR&al8Nl$XFC%THjjg~*-B|ws1))+e5OpZGc%t;WBOX#9kSP`k20#0V`KalHa~2l z|M}nQ^&9OkDSo0N^#7<(^apyin{JDq5JjsHOnS=!W#hcQ-T4^tC=2coMlK8D;ZZD*k$(_|+n-t#Jm=Qbi`iHqsku-|{>1mscXy&uA* zpkstd1=B1k4jL&^zF~MCf|kcr<7C`#`_$*zbnoZ}rfyN?BH^lttl@{cGd5P%@PznK z{&7pxZ*^u_j9u=^6T4}i5Rtt_1Q8b7U4Z3o)a06& zj_lj?7}F+ph76h8Iyy8)*$s`1TIS}|LpUD=&*?sVW|jY$tT5wBk|}NE?){V+Omm`H z71Q>)9^ia;7TiQ|o0xs852*KbEIHh(^OxBb+RuG*f6;NV2Xtj%^Pv-cYxt86(r||I z(*FI19xtSR#oG5Si|{0-|B2R~HDP2^k+%rS{O@_F=Ft>L-@+$*&3!ppu@XN6K78@4 z`yQRv1;S7a;VLIxqC6qL8djc>9HV6dpd2K%Be&jE)VYUDZvSxH>lfex8r>^krQ@z}d?2&X6?hE>^X#3b=O)W=A-wDC@Yvf(r--B}tP(8vgP&(9C zLUS_gUCNyq1(+eLIJ#`-#8cI$@^`b&$Zs|^?+Tv}U z-JVX1=QGLg%wm7oj%IgB+3gb-hM1}Kj$s|=7d8S(d)p=-;><#d_|raME(yGUGx}v4 zKgK9G_uXCeENg6V9BW(5rL>d|sZGIk(Qc4 z6FIVvQOXy}AJZ6hGn=Ulj)*|jA4u%(2*&+VqV*Ne@lkh9-4?3cuG}yb>|c;RxT?dx zGZF^4*vy}wDN@b^g{WAo=kMJh1+0L5Ld(BYf@SM%vhGRR8&}Ua!6Gbn}FZTy~Fdgv^2>i z&gi~ANsjHujjsFfi(EtPYm0=KzNU>6jZw0^UgICrK(eJF3jSYSdpkZtQ}=gQy^xP7 z3IXE_30&(zoxL+?bRh6KZm!)*jAQFm^&S;Kc!8&H>pEKe87~QUu2?Q`uO~Q4FUJ0d z>%gw2^WMm|3vI63=l2v8T77X0)GFnh=@Ht1Bxw75%#^$0W{t?6YaEn_O+I zC=-Q#J@+7kou(C(3^@l%_Dd_yTG15E@|6wbhD)r9iAIUSriM%VYPvU=3ti9y0}&C? z(9|@FMCQ@+JfXI!!qpm5Uari59=nunM?ycju(oz^vkoxn1Zi)k+#D`4S#zqnJLbO5 zl6M@NceAh9vG*Ctkzul4m%P2ZtAX6#)EqS4tRkR4EH7zmtb&~r0f_G!CL5oH!V8^x z?v7~4k|%Sc7`1FlQcUdm{{Ftr&bZW*hco(He$Sp0D78*l3cM;hsymCt>E=QD>vKGG zxenh~p-*j#5gTJr#G-j- zS9q_-BGYhzF0^(`k1khJb&m zx5Bd=X5&d&>JeO?7q^}Z;Lcd5O|>l~Dn%};B|=xCWK@-YEKb?V^m&Id38IhZtA$rFc&fjA z57+>MlcQaE_>fj8)i=bDZ7bM;fSrR0)3hvwax?Li_w}roEcHC~VAb=p@M7!|ZGcgY zk=3}7fI$e@Cj+`V8nK$wD?t$?~b< zlc1k)WFfc%+!G3HSNYi??ljPdyUT@%n7_iM@!ACZ;uHYsRiHC+0`VxI4QZhTib-Fh9Sd=binVu{W!+ z>nmIPVvxA|!t17nJBeN?SSoLL@9-?Jx%JKYD#n_;!spiJxUYc1h^2sSM8sai_l#57 z(yLMHuj0_YB@7piHEN3A^jGNrJe!K!F$O&QSWDz&Z^Fa+^FO(t&?Y z$4Nvdc&hXj!7Fn@rmJ^XieK^&#-E|#yqY$@3Rzz1yDY9$jQkwo=Qj<@N5}_NiEJuS zn#dDg4c^$z(4d0x_sS)VQTVTun8R!Om<}^{ecFz)so@Dc}pp04&#Ke-j~T69=J( z_IK@irW1TrU9?=NV3!)iUUTr)i@C6yy{Dv&v0e3pj`eki>V9Vj-1U(+7qc>%jGn(R zcrtiIj#8!%5R~Ao4VT^$dy&i(@-;E1tcFHj9e6|5L+$TgdjJz+j?#_BG`Nnwn;RWG?D zAqT$4MU!g^$3m6c&N52V^;d0IU-jclj(GP7uEu&V%0 zI3%usP^OipL0QpdXaCuvhNS6rmBtE}7tM|F&e-!89TNMR56)I4%^;<7T`%@oc-4)ybh*ZWV*n7D_?1e)ezgtnjg?R zk7b_A=Q#TvZb=ErQ-r;i=6P5K8isIm_x-#B?-n%C^Xl-d&e)&xCCQFyCs;TJ6068> z;0Ugclvf%HE$7>sR++)>Pu}jQAT{?CR8QW-5 zj;+V=kO_4|T(p3=nX4=q6*L*S=Iuw{le`SWBsT<3N+|s ztj_4>OOBM`mj}NiU6|D&FQ6etU?MTWIPOgCnvPGX8;hEvIjzxPp)Hs#XFG9PU9ts{DJoozZjP^(`t+S;F%MCXefBIDiXUJ%gK^ zkeD{M8w}@7ZEGh=dTy>i_$t}hYby5`9PpQ`*u}8Jk;2iBC`udNTBY6!4V7fPEA$aN zY1qXj29yl>TtF9H|AyX(Sn}Q-^@?9mr*Q@2${`XjgDbz>m)B5lruDak{1DXP(e*zM zCQD1$+qvq<7WO+6@e^Un>BQ6MbM+s&9;qyz{>pVT=P#c|3iZc=byNLoaAsvAh6k^P z>m+odzkc%PLElGBouIBW=r3Z`!rO0L6>KEUAHZnCUWyDsEQv3kb`z2_4O^3f2Flfu zrGt!xHEEZ)@IBvnz%Vv45H zhUq$X0=~Tn)s;Q?NNeV9<-(|X4oXYS14u+Zvmd>kv;aVj=Yu-YkOt3H={=y>^#q3r zzMqtV^Qhhk6O+sBiS0+~%?1yH;gqG#t&FHoQ|2Ddi@xxKKUiM&HjG~0&axk9BA0?5&#BKaV&An=e7G8MH^>PrFE5v!n031Y zM52N=+Gk_CsQXq8TjW%oou-O{lGHa=0z#qhBRUK73JQxWH0NGkyr_a`559&?N6qD% zY`!3G%!s9onX9OqN+`wjAX-RO+JQ5KrC^G_8@;2E-b=~YD`pkhhMA*4#$ISApVSrF_dT3(?D5k5eA`WQ72X=%7gb1&YZ09&%~5X^9LVml zdAUxp4f4zs^1C+1uey)N!)^AWGRQtGo9oizOB zVMf^#7c(}XS@&gBU50^Wn}xR&Ia?aPnDU3X6+SDx-G%6M`RVH+yU2u{X?N-ktmtuL zw~0ObTeJBE`ibw3J8M;{(cyz6Uy%b@OL|HIc*rj-CW`7V7dufnW00ycWE2UrFQv7C z1LA;np8*mw;*NJmTV0oYsvYh0O4xh4wt|q?dt_t3&)D>IXZue3a?DQ6Zhe!%mrmyg z(gXfa&Woj1YLc2-M|wxzouQ+n)9d$PVbG}9e2G|kvGryu(0|(hcCT+?tMpyK@pmh` zFLp;a`%UD;>`$`zyAi;zGe@&atVYBcdzgw0?*M5qX|tGae4xz*z+y#9ahhG36#3R% zA)9V}$D!4Lv1ilEZ1<}B%r}{(w66GEg!5vdVFb_xRst51Zk7=>_TCi<++Y&C3K3o! zXv&B5laLU6+(}!@EzgPD<*FG&_j_Sk?yfaPKq&X&FAqvJE* zw=TQ$f6e3R3^+XAXGx^(f7{IE!BN#$vwD8xFnJ%xA$v}eORgZ+En2#O;5fc)kIBSp zPA%6WcTTlNU`{}bD`3pVVja1DJT*~?`@{e_X>5s+7M(DuYX4`5yEC5>R`nXw3?Y29 zWpo763uu~ccx&Oq#>!5=0BGQ?j?=3JKDTdYRc329oiAUzc=4GVtI`(B!thC*@mw^2 z3v@OeUUQlqp0aw=G)V`N0cj*%Q8L}?AGQsVU+!!*9nW+v9G{-%$WfZkmD#MyGb7q7 z88nJ!%II}&-wC-knWiwE!AfG&x8ENmpbfY_+uzyiO|Wn1?(>MJ=J@HY%GVU#8N%BE zm;*pBnBgtqw+oXM4yj8hekod_lVK@v$<~(VBi9T=_7Qt18DWMI&NIoc80qy=UGbxT zA&*U^6&TK$i`;A&I*asGuuzMtH+zmg%N);{zTUZ%$H=5jtxlh8oJVG0E2*EbqVC6V zbKjKXWxsBem|oz^=A&{d){>di@CD&X+kL@kWfm)(Uf$d9uRmC~TIpmvZk~sa%S>v! zWjKMJO#?X7z31?HD4$S#Z%uK+%BBND%T^%#uIq{rN?HiV2Wb9sBeNvAVeJ+b8u7d) zAaMI)KW_M=S*NH~WXDHy@yr%YBCx_|`B(=!(U$v`4H~*a3ZYzC)KyHIPuupsEqcvr zCc-;e6@1p`1<-3PP67_X5lVwGgEzdqY!K^9ogyHd~qQ>K^ z{uU5cl^LFU2!yHkKx6;-Tz&tD4jO$$ESV5P6M#0fTaH`Y$43W~+Vf&z#9>kJ=jBfE zfzYsKXsSjG!TS}aM8v{E#h`;Opn-C#dv0{0r8*j8QdzOG_K#e9#aZ7l-AGj7t{&=7HHO zbrS3lfB&~+WWEWY#`xi3dH=jep4DX4HUlNX8EK7;8tIgep<}HEV}VlsdrHcPABYdZ z`3?2r;zkltaGT#n2SWnt492wI)t}HoUzi8 z4>`Prg{FR>kdROi4od*0ri)xU?eF$tz3QT(kotOV8&36vUNEm!p=y;ms_lb72$pxG zt)TiNI5cwUHl5N}goF$0obV_FPqp@EYyKb^dQSnJ-I@H0?%v*vnwt2M68if3`e`)- zXfE5^+q*=+9|s-LM^NK&hH8Y}B}}JIJSv44g-TR%n7>s?^^fdsnVdLu86PT1TOXVF zZ5YfyJHvm+NiZ}tEQjnCS$6hI*?zjn9anpSczAleEAO?`5X+Z6thHVwvQI?Hz4<*b zWy)0lWW67c!^-=k7aW7Z03OG$hnU^+Dsm|bKX(<6PHQ=_bW|~Zs(~hYRZQTU)Hl28 zz4;{g%MJXQT|U0@4Rg5pNl4zaOlW*O>;Y-9F5xn9Q=89%YuzFokS#Aw+(KcgWp;~Y zq17_BhlE8@fG zI7g9AfUtx2dh1se+ROOi(9&Y$_L1J!tfRW9qoLPRQ&T|%Jl|JW_0rSRS2rK?-U85U zv3I+ggqz*ligguq#Ao*(In$kN;i1`GL#MOg>|tdof_5`=P*G(nn65)Tqhms*H-45F zpo5xzcwWjgQC(ev?$wAS`wA6X&`_{M;S3gzj zEvy-6V&pH`WDf-fioax}s~ZZeZw5a=Q@X~K{f6AL{vkVGtHyhmj-jlqm`>y<&`-B# z&;n~>e$5h(?i)kTyPU?#!M|8&Ot@^* z04ORc9(6?GcDd$sHAIrnbZUE>J+7KB&@*`;XQYX`?4!GuLe3(3o) z24c`GpG{~s{a7-f$C9O7OO}0bPImCS_|{X$NQcs8v0rt5Lk3zPjRJ>=woKmhH97y+ z-1YVt;6#nKbk{ODUy7^SVn|v>C_61AJwQXZw#;zBRNpMgyUvfxciD9F=)4%0DvH8H*vAInK&ytF7CM9KD?a2&phfbwNAxLHm2W6EdA z`&v{R-3I@?mCJmGj5JRag1aXkH;vzWPD4Ai#R_#>%Tk7A7XZzekXzqb`+#p>UbT?G z?*p}a)V)u+WA(UH_K_rv@!19lns?2rG7c3F$5Q0!vCS0TbbxWXp_J_qrIZsiN%$jM zbUuTQ&MZo5YEl}SVCWvj=y0gTk@w))OU$uq*yo4Ci(laY(c=CpIp!5EAFK!)Zh8j9|G?W>7@EH`VxQ_tHCU-JazRzfkB-`ce?O=8(MS$^E}ew^{6GOPd)KCS za~k}y+yC4OkH+4YQ>op|KD4EE#H+#jW%!NxYhe4@<+DrFJB4@xPGs2;V=h-WvAQFc z&+#+CDNHM{M7+Go1qIZj#!ehc6p6){5@B0%(A* zOO-W6d?`83<6XI8yP9sEQQ((al;u)PSnNLu0WsfIhBdp*tldQb(aLM^d+v} zAU>-_AQaC{9gvri2#oHrQRUy-vA@sH!>6&2F+f4#<~C#NF!E}EQQ;Zh=f`WGh`;1m zk=Gb&Fq>f&7Z;D?uqMN0GuMNn23C3xlSsEFZG~%iZITsTy>O=0oqtjqXTouNo_8{S zGCYl1VH|no3Cx{#xG#wf-P12_12$BHwvcWP@~QeS;kVcu`7-9NS&}Ppix7v+PAsY1 zYL9QMOP>!tl^(Zr`NRs4JNdOqfcE@D%16uFn!|9`i;2z&zxo2E%43;n^Opt1CaI+T zhN?v;!numCm<2_Sj7ZuI#E(#ZzKf3TptON$42gwAnX*N(j7(07R^(>)yXJD}w;2BT zuyG)9)Xk{sxx00l`#NMf!IF7K`!-QdUY_5{iF1B_9toebymiLU*O$?DTal58Y3;|u zCNH=l=F8)1`aJgD<7-APIs133VKfD)y_RaaZ zBmBMgqt8F5aLT=s@9HA0(>?A?MjXsH4)Dea$9bOmNVhD-GCJ~IDhxM4ttV{Me3lW! zj$7sWta-D}FG&KUf#>MB@v!$D^duo!WTlCB2X8d|kW!2tldb5L{FNc+?LA}8TIYB! z%W8fbP=)E%_QTItUY9Wg%v^FB?1x7?vF&n*y(A_jPGj=fJd?DnzW>hfecAEAG0LEi zF@uXSzjGO;_M8Ac4&~+f2v6lxF7UZu*95Np%HBqMYWN*~$HVexK;dBq-HsB&q4Yp; zUl8;)R%s-ygz$!Dj6lN`i=yI+ffK2SNJ^G z)#M)eYd_~D+UUwGNe>>)zXBqx0$KQLJ{_G&0$_thf`g94Ch3lmURdZEiT~ofRJVnf zI@cDk`^6~=`YESmYJ;U|u(DB57V2Dw1%;2G@!;U(B!x)j!_^|Om!|;VHM3QSlInd< zO-RWynM7fMXAO9c z8Mn`j+(h(zx$8DY(uWP5zo%IGx-`*tS&g@n(^#4u6NACcGSEN5HZh%i;F^2X6m@U^ zxlZ$>vwsZBJ?ZFHw}>S}mg4aEFrCWs6U2V(QjBr-ITYo2x8VSTwh@$--P5;kmP;yw z!*9xe$|83kLTGPMzsPPa3{LA&Yp*1%Vz4|EM0FxP?AQRwE+~UfadXh{&GQdr*FV~2 z-T7HGS?C8R+0G$lf97+ICQ2c4n*gUG#3h`QZ?5Gn-j6^Qv*U*%3^3=c(sU znoPBVYI(Zytu<|p>v;3gC=59S<`irVXIVaT3s>EnJ&8xo!79XU59oGJ*95!K^3g#v zQ{~s{VXWVrI~R6_Pg)<8v3IMR$GX(ikQb#H zz}fz{cj7S?1vgL8~dE#JCeuvO0;H z?wL`P-*UQK3R$WfS*WPl-67Fr(rN_^TaBox7$}OO?}!u_n0LWiF>7XGs9B@zMe!;) zm>rrpI6K&XujIfXEW+cXvMh@GRSafee zxC$r7j{oqcV{34xPm&DHsevF^Sisb@V5g`SsU|wj+3zRgO7X0M4T?|)F)uYF%-L)I zU9L=oYXei3!C>r;T&^M%phElcqMRIz{S2Gpjrg_jMZ1~_Sq?jVaDwmroHJJg;TiIo zUUGM4kGzjx9lYh-@}QFu%*+J;)U|1!EsKXIk@~BKx+E$t8aCttC^94*!;33pFLT{_ zYERh+1*gzs-pK3yoYRU|_%5I&O=K?4hMJCwXRfKLDN)Ib%NC9Mwef2rEoX43ABtgE2j&}65GgVHudPWg1&9w6!-+GN{PD>+ z&p7|v%V09ql;D(5Ld&_8M9QXVc`0ZvoWL06*5$VA{lLesp56q{FCDJR^NMq8{DVA^ z3Y4hQ?$e&$aJY#{o6FI%*s>r6VIx?~`we9UrAX`%imbH8AFUKL#Gng1hOUois;c7G zsmRdCX%|8c`>DG!v$C?r7-Z$tKe`#YB^()nZaGGp_RRQ7CO$xu&VC1Jqox*DH8(eo zb?=KQ$+t2{eT{sNS{e>k*0b%puUg`d;KS78g42cpN{46XSq2W^mr}YlgGXz9mo=mJ zmNqUEY~zv1vC;wxuy5Vo7H$u`?`cspAmb*Qy^oL3jF5@W3eZxgho<19+ZXv$WCjRQ zFje+9Px^D|Yo$PZd|*s+MdX|F?D(4GxDqRnmM;X*lBz2~_=%MD5`5ds^6J5HB1~tF&DbAhQ&HSWs-9@8YsN>E0Q34c5Jlz?St^l># z<0>bY-p;}wdg7(Grtk4-_FUGW-mM_^)AWz3;tu{8kg}GgK)=0i)nt0>@`P>DsxRR+Pdui+mZ=unGeSu1T^!-*P947j zn^fSMtrJpo&9+ot_VcbPGS1F#L^5?6IQQbaHgZ_s+mAv*mS;3>1t*5yXNyUuu=!(B zC6m@WW4XeeueS$~i%I_MuY!VRCoRi+KkCt`XI(L&;NCOD%f-^YxS;659&ApUaIWz= zQ?4OXo@K?WBKm`I$GDid&DYajUmM_cRCI{n-_L$pcf7kGVhl)C+Euqf;`|_`?!KF={h);21qR-LkQ9p6IbC0r z(-FSn^>A&P78$t3bGsZvc}nHwsC}V%xkmCM=Paq?I$<34aBD~goKL=2idJwh^yCfh z>)w_rct_qPN5DMJIR=#1DxHGnrYx@fjzWAAdjizj@PdCOy}41+DzMtmrx4jQq2p~| zYrj3uZ+Cd#AX>xZ6NUYrLhkscn85nW-GIa2K#ul5ZuiD!u;Pw^5U-7?6$Q@-3|v1A10HV`Vb%O)p}lioW9DT z-HB1O);zimn$cQi@%=^8WapBC-}_?f4b@&+)K*m0=p#+n`#{@n6V>({l0B1r_oTV` z);U-xcJbxYmr=G+&C=?c<=aKW+lEAAF7mx5XFkUlCztv?Y=%4)(y<2tD;M(DIStoL z$4tuMHJ)zUZZ2GBs!mrI#-BD0y|qte&$Q-pD@K)#yQsP!tfs>$G)ty@1^mH)HwDkN zkzK_tcLQ>My&&g;-wuA00^u)0;_82RH&#hSNg0h=A#J9a4W>(DsEZ%ug8flkF;}sZ zuo!$4NGXokd-!57iR9saM+f~H<+KWr`43ZAa%ahebj9_)#T%u z_k>ysV^;1&w-qMnQ-_kKUoati@&gVC>pOkYgf{B9GjO90Mf;#gUgvQL%qvWS&eVA? z&RJiLJmq}?Tef5znSBl`x&w?RiPF+IC}!w4!)dJPeAG?XPoB?_5P#2eGfQ0sUB4c}4c8aF`)a;*(+&NcZYQlE1o@{W zIvoKg9Ts)2CklPHvokWu_`xZG*iA*7DH0VfS z8mW6?pC~xIo@2z0g`FYKmXTX~@TscHd2*nP$n=B~Bs*Es*4R0?&X@1(22BPJ0{dcK zy}4Rrr5g0hHI~P&h@Foe$NleMORCtL%Z8|XqvHFYd5o(3G4!Dfu$_ZE)m&f$9!S|G zTxsgXlVmY>-;A8l=?V8oFcW{FU~BW_Jtz0{(nes$TCCGOs2GBe&-W=N&u(QS0POy@ zyF_AiV*37?`tJbEd*g}!4$v$V{talxNJ#st7SJS?CziD51XH=@AWAbFr?ANx73zPS ze1iI9dCFk+#o%`MM*z$;phpsTZdIJQ|DE8xSjCIS3%t;jlHIJ#HOVV-R643^`dNyK zcYVc-uu8@5e04fGq^(LFQTG0HVXCsSyxiu;Etc8tGc;`vsGnrAWS8!2(yq@kcCNWP zFsyU}@2tNbEu9|QMJ4nyjK;qHfzYcB#JL>sz^IY8-J%!#ZNkIEt0F!qIXeM&Hk2? z!HqWC9dFG2eA~2Iv-<8=FP#)Nqt64BTqclWnLW+=NlR}bT)KT=Xd^OXWn{=IHVH!4 zEa#HspAx25t#Ei;iVyJbb+TL-#y(&8{Q3J4iq)K^*1LD_GIMfP_V)S*(*)G#UuF%n zlC-ODnM2q-LUZ;^#!e$5&m+N>8D<)##j(YAh*m}l&x56cTez3iJF&fKz?mEqZwT<%|>&zJ0+t1zaSIdm-OehmD64TeBgLDS4^5 z^-eAm^i3@VuR)WvI!0L#c@B@!Lea3=)+k9Tt-TAE{QVSfbr{Ws`4Su9tuNoMqvtAb zH}qwa<5;Ns=QFTRhhJIm%*ihvy0FiQBB!cD1v2X3%as0hSmxCQA$&RK4j8>#GtY@YV*y_EU zEz1DPp4eu1v#$`YGEliaInue>WJ2BLa0OoaUF!gW=0H$N;8w~V_RUP;!bwi9^j3SN zwaypdl%wsb|8^_-!ux{0FGh8UIGmwzDg86%p&4LukIk7ns+kbg^`IEF2bC~KU zCRzpB)l7WTh^_?s8q3=5&)wyVId>UBi>Kl~5wDX;M02IIp>LA(q6}=RL#Dje4~Hgj zzg%|n6X2ZEla=}R9ZSwT93s1Lo08YT0{J4G7^9MJ^9(flZED6s^Z&}SWZXQ3I_ z&fcdVat41=n!Nj%^6W@`|0=Xnu`V}0fjJi3SUDHQZn8-o>&nZ)$%{`j;kc7{?NT>* z1${iu6;RA{R5yA=SA?8&Z`;S)IM02$jz^pge{{Fvr|dqX)abtZs)g-xCA)I%_~AJ% z$Hpuy2|DH{O%Z|%8-_JXw^Ggd0|QG8u}KwFX;V zS%&EQ1p_YOqA6W3CtPO+XB-SBxmMXQ=s^qI_ZGX)oiCQc`z$DZJY0lU0Na@4%>2-&{o4vj& z9=;$o17=J&d zrqcIW?hECxS`X+wamInCF$(&*%XX>0eQ7BKQ8RR5ubW-^^eh^89+3`51xNL6US_9L za6zn+Z&x5)Y~RfJSATQZ*Nx=`X%|k$`{{t(vY8aKohfT+T-c*@aQKWwRoT2&o#pVL z&SFx8eHW{K-RkXP-{pzjh5o#~b=^T}o5=rUq5Q(8fN@|84I)$NzZYJ(l{GW5*^PcI=t}d)2FLsP4%VC{4`I# z#jkG4V27eJ5gr*ju^aPOr+ael`|Aj-nfN;#)dHQ+wGS)3Q`6HYCL4@9NBdE) zgH&xNf~=+_He5nSI*8STR{SJVVAo<40XpaGs>tBNM4Gzw^YH3m9y^n-{ZI^0BkVZ= z8z{UpJJ(k|=Vku`A`2<;!TD1KD>BKo+{0124c} zF7>~R04{3n!Vz+SBL4C(MO-N$kc9e2EQh|Z`|cx;2BUvt_F}dZ{0j>UcX^C2DaCQd zteoFWwGRlpMs+S6?(XiU=H|D_$sheC0006g_|KoOPxn`CnSU%TEhPy%TmU3e0c4Dv zk>?<~PO?(20#KWq+uE94{+^NXKrW1?J%p?A@n4V~sl#iaqa$x*!~jYz>07d3tO0Z- zLcz7atIB@WK40dAX54&(@30t`=>|naKpc~OiO4Q+yKWl%J!FNP9C$j9eE(ldO9N9= z%DTFDjf{+JOZWhM{n@i;y5;6KuKPdxhjS2NIz|mtyo$9$0Q4*GHGy2`X2)N4eeGRXkKu=rx7ni_fzQ&L0W_S+Y&5}IiZI0}WzbjBL@;r@-kncA zobFA3npE#sKKYM-ban%z0Pv?e9@!1>=^wN4eDN%Jf5TcZGC76#Y4A+*Z8R~)Y}A@_ zd>(+{Bdox4tLj{ad{TB?5+%_I3Ec%+h4DNlS02iRejfOZFJEKhc~Nu!I!2N{6g>Tp)SxAK<-m4
|>R9bN{PkOOK`XY@PbF&}XXB>_Ogq4+Sew`XG>D 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 tm)}2=_H+CB_}=_}_uK_~LGmY_C^$-YtYhW#o! Date: Fri, 28 Dec 2018 17:14:23 -0700 Subject: [PATCH 11/61] Revise so tictactoe is only an example Signed-off-by: Daniel Hardman --- .../.gitignore | 0 text/protocols/README.md | 315 ++++++++++++++++++ .../tictactoe-1.0}/@l10n.json | 0 .../tictactoe-1.0}/@l10n.png | Bin .../tictactoe-1.0}/ai.py | 0 .../tictactoe-1.0}/catalog.json | 0 .../tictactoe-1.0}/catalog.png | Bin .../tictactoe-1.0}/game.py | 0 .../tictactoe-1.0}/handler.py | 0 .../tictactoe-1.0}/state-machine.png | Bin .../tictactoe-1.0}/test_tictactoe.py | 0 .../tictactoe-1.0/tic-tac-toe-protocol.md} | 20 +- .../tictactoe-1.0}/tictactoe.png | Bin 13 files changed, 325 insertions(+), 10 deletions(-) rename text/{tictactoe-protocol => protocols}/.gitignore (100%) create mode 100644 text/protocols/README.md rename text/{tictactoe-protocol => protocols/tictactoe-1.0}/@l10n.json (100%) rename text/{tictactoe-protocol => protocols/tictactoe-1.0}/@l10n.png (100%) rename text/{tictactoe-protocol => protocols/tictactoe-1.0}/ai.py (100%) rename text/{tictactoe-protocol => protocols/tictactoe-1.0}/catalog.json (100%) rename text/{tictactoe-protocol => protocols/tictactoe-1.0}/catalog.png (100%) rename text/{tictactoe-protocol => protocols/tictactoe-1.0}/game.py (100%) rename text/{tictactoe-protocol => protocols/tictactoe-1.0}/handler.py (100%) rename text/{tictactoe-protocol => protocols/tictactoe-1.0}/state-machine.png (100%) rename text/{tictactoe-protocol => protocols/tictactoe-1.0}/test_tictactoe.py (100%) rename text/{tictactoe-protocol/README.md => protocols/tictactoe-1.0/tic-tac-toe-protocol.md} (95%) rename text/{tictactoe-protocol => protocols/tictactoe-1.0}/tictactoe.png (100%) diff --git a/text/tictactoe-protocol/.gitignore b/text/protocols/.gitignore similarity index 100% rename from text/tictactoe-protocol/.gitignore rename to text/protocols/.gitignore diff --git a/text/protocols/README.md b/text/protocols/README.md new file mode 100644 index 000000000..3d5787298 --- /dev/null +++ b/text/protocols/README.md @@ -0,0 +1,315 @@ +- Name: protocols +- Authors: Daniel Hardman +- Start Date: 2018-12-28 +- PR: + +# HIPE ??00: Protocols +[summary]: #summary + +Defines protocols in the context of agent-to-agent interactions, +and shows how they should be designed and documented. + +# Motivation +[motivation]: #motivation + +When we began exploring agent-to-agent interactions, we imagined that +interoperability would be achieved by formally defining message families. +We have since learned that, although a message family definition is +highly useful, it is not quite enough. We also need to formally define the +roles in an interaction, the possible states those roles can have, the way +state changes in response to messages, and the errors that may arise. + +In addition, we realized that we need clear examples of how to define all +these things, so designs are consistent and robust. + +# Tutorial +[tutorial]: #tutorial + +### What is a protocol? + +A __protocol__ is a recipe for a stateful interaction. Protocols are all +around us, and are so ordinary that we take them for granted. Each of the +following interactions is stateful, and has conventions that constitute +a sort of "recipe": + +* Ordering food at a restaurant +* Buying a house +* Playing a game of chess, checkers, tic-tac-toe, etc. +* Bidding on an item in an online auction. +* Going through security at the airport when we fly +* Applying for a loan + +Protocols are a major concern for SSI agents. Agents need a recipe for +stateful interactions like: + +* Connecting with one another +* Requesting and issuing credentials +* Proving things using credentials +* Putting things in escrow (and taking them out again) +* Paying +* Reporting errors +* Negotiating +* Cooperative debugging + +Protocols are *composable*--meaning that you can nest one inside another. +The protocol for asking someone to repeat their last sentence can occur +inside the protocol for ordering food at a restaurant. The protocol for +reporting an error can occur inside an agent protocol for issuing +credentials. + +### Ingredients + +An agent protocol has the following ingredients: + +* _name_ and _version_ +* _roles_ +* _state_ and _sequencing rules_ +* _events that can change state_ -- notably, _messages_ +* _constraints that provide trust and incentives_ + +### How to define a protocol + +To define a protocol, write a HIPE. The [tictactoe 1.0 protocol]( +tictactoe-1.0/README.md) is attached to this HIPE as an example. + +A protocol HIPE conforms to general HIPE patterns, but includes some +specific substructure: + +##### HIPE title (name and version) + +The title of the HIPE should include the official name of the protocol +and its version. Because protocol names are likely to be used in filenames +and URIs, they are conventionally lower-kebab-case, but are compared +case-insensitively and ignoring punctuation. +Typically, the name of the protocol and the name of +its associated message family are identical, and so are the versions. +In the [tictactoe 1.0 example](tictactoe-1.0/README.md), the protocol +name and message family name are both "tictactoe", and the protocol +version and message family version are both "1.0". + +However, these may diverge (e.g., in a case where a protocol +uses the same messages but has new states or new constraints on when +messages can be sent and how they are processed). It is also possible +for a protocol to use more than one message family, as for example +when a protocol uses a generic [`ack`]( https://github.com/hyperledger/indy-hipe/pull/77) +or a [`problem-report`](https://github.com/hyperledger/indy-hipe/pull/65)). +Therefore, the association between a protocol name+version and a +message family name+version is weak, not strong. + +[Semver](http://semver.org) rules apply in cascading fashion to versions +of protocols, message families, and individual message types. Individual +message types are versioned as part of a coherent message family, which +constitutes a [public API in the semver sense](https://semver.org/#spec-item-1). +An individual message type can add new optional fields, or deprecate +existing fields, [with only a change to its message family's minor +version](https://semver.org/#spec-item-7). +Similarly, a message family can add new message types with only a change +to the minor version. These are all backwards-compatible changes. + +A protocol has a dependency on one or more message families, and should be +versioned accordingly. If it declares a dependency on message family Y +version 1.X, the protocol's version need not change when message family Y +evolves to 1.X+1; this is a backwards-compatible change from the protocol's +perspective, because parties using the protocol can use either Y 1.X or +Y 1.X+1 and remain interoperable. However, if the protocol uses a new +feature introduced in Y version 1.X+1, then this causes the protocol's +own version to be updated. If the usage of the new feature is optional in +the protocol, then the dependency update is a backwards-compatible change, +and the protocol's minor version gets updated. If the usage of the new +feature is required, then [the protocol's major version gets updated]( +https://semver.org/#spec-item-8). + +##### "Key Concepts" under "Tutorial" + +This is the first subsection under "Tutorial". It is short--a paragraph or +two. It defines terms and describes the flow of the interaction at a very +high level. Key preconditions should be noted (e.g., "You can't issue a +credential until you have completed the _connection_ protocol first"), as +well as ways the protocol can start and end, and what can go wrong. The +section might also talk about timing constraints and other assumptions. +After reading this section, a developer should know what problem your +protocol solves, and should have a rough idea of how the protocol works in +its simpler variants. + +##### "Roles" under "Tutorial" + +This is the next subsection. It gives a formal name to the roles in the +protocol, says who and how many can play each role, and describes constraints +associated with those roles (e.g., "You can only issue a credential if you +have a DID on the public ledger"). The issue of qualification for roles can +also be explored (e.g., "The holder of the credential must be known to the +issuer"). + +The formal names for each role are important because they are used when +[agents discover one another's capabilities]( +https://github.com/hyperledger/indy-hipe/pull/73); an agent doesn't +just claim that it supports a protocol; it makes a claim about which +*roles* in the protocol it supports. An agent that supports credential +issuance and an agent that supports credential holding may have very +different features, but they both use the _credential-issuance_ protocol. +By convention, role names use lower-kebab-case but are compared +case-insensitively and ignoring punctuation. + +##### "States" under "Tutorial" + +This section lists the possible states that exist for each role. It also +enumerates the events (often but not always messages) that can occur, +including errors, and what should happen to state as a result. A formal +representation of this information is provided in a _state machine matrix_. +It lists events as columns, and states as rows; a cell answers the +question, "If I am in state X (=row), and event Y (=column) occurs, +what happens to my state?" The [Tic Tac Toe example](tictactoe-1.0/README.md#states) +is typical. UML-style state machine diagrams are also good artifacts here. +(The matrix form is nice because it forces an exhaustive analysis of every +possible event. The diagram style is usually simpler to create and consume, +but may not consider possibilities that it should. We leave it up to +the community to settle on whether it wants just one of these, or both.) + +The formal names for each state are important, as they are used in [`ack`s]( https://github.com/hyperledger/indy-hipe/pull/77) +and [`problem-report`s](https://github.com/hyperledger/indy-hipe/pull/65)). +By convention, state names use lower-kebab-case but are compared +case-insensitively and ignoring punctuation. + +Some protocols have only one role, and thus only one state machine. +But in many protocols, different participants may have different state +machines. This section has been neglected in many early efforts at protocol +definition, and its omission is a big miss. Analyzing all possible states +and events for all roles leads to robustness; skipping the analysis leads +to fragility. + +##### "Messages" under "Tutorial" + +If there is a message family associated with this protocol, this +section describes each member of it. It should also note the names and +versions of messages from other message families that are used by the +protocol (e.g., an [`ack`]( https://github.com/hyperledger/indy-hipe/pull/77) +or a [`problem-report`](https://github.com/hyperledger/indy-hipe/pull/65)). +Typically this section is written as a narrative, showing each message +type in the context of an end-to-end sample interaction. All possible +fields may not appear; an exhaustive catalog is saved for the "Reference" +section. + +Sample messages that are presented in the narrative should also be checked +in next to the markdown of the HIPE, in [Agent Plaintext format]( +https://github.com/hyperledger/indy-hipe/blob/master/text/0026-agent-file-format/README.md#agent-plaintext-messages-ap). + +##### "Constraints" under "Tutorial" + +Many protocols have constraints that help parties build trust. +For example, in buying a house, the protocol includes such things as +commission paid to realtors to guarantee their incentives, title insurance, +earnest money, and a phase of the process where a home inspection takes +place. If you are documenting a protocol that has attributes like +these, explain them here. If not, the section can be omitted. + +##### "Messages" under "Reference" + +Unless the "Messages" section under "Tutorial" covered everything that +needs to be known about all message fields, this is where the data type, +validation rules, and semantics of each field in each message type are +details. Enumerating possible values, or providing ABNF or regexes is +encouraged. Following conventions such as [those for date- +and time-related fields](https://github.com/hyperledger/indy-hipe/pull/76) +can save a lot of time here. + +Each message type should be associated with one or more roles in the +protocol. That is, it should be clear which roles can send and receive +which message types. + +##### "Examples" under "Reference" + +This section is optional. It can be used to show alternate flows through +the protocol. + +##### "Collateral" under "Reference" + +This section is optional. It could be used to reference files, code, +relevant standards, oracles, test suites, or other artifacts that would +be useful to an implementer. In general, collateral should be checked in +with the HIPE. + +##### "Localization" under "Reference" + +If communication in the protocol involves humans, then localization of +message content may be relevant. Default settings for localization of +all messages in the protocol can be specified in an `l10n.json` file +described here and checked in with the HIPE. See ["Decorators at Message +Type Scope"](https://github.com/hyperledger/indy-hipe/blob/318f265d508a3ddf1da7d91c79ae4ae27ab9142b/text/localized-messages/README.md#decorator-at-message-type-scope) +in the [Localization HIPE](https://github.com/hyperledger/indy-hipe/pull/64). + +##### "Message Catalog" under "Reference" + +If the protocol has a formally defined catalog of codes (e.g., for errors +or for statuses), define them in this section. See ["Message Codes and +Catalogs"](https://github.com/hyperledger/indy-hipe/blob/318f265d508a3ddf1da7d91c79ae4ae27ab9142b/text/localized-messages/README.md#message-codes-and-catalogs) +in the [Localization HIPE](https://github.com/hyperledger/indy-hipe/pull/64). + +# Reference +[reference]: #reference + +The [Tic-Tac-Toe 1.0 protocol]( +tictactoe-1.0/README.md) is attached to this HIPE as an example of a good +definition. + +# Drawbacks +[drawbacks]: #drawbacks + +This HIPE creates some formalism around defining protocols. It doesn't go +nearly as far as SOAP or CORBA/COM did, but it is slightly more demanding +of a protocol author than the familiar world of RESTful [Swagger/OpenAPI]( +https://swagger.io/docs/specification/about/). + +The extra complexity is justified by the greater demands that agent-to-agent +communications place on the protocol definition. (See notes in [Prior Art](#prior-art) +section for details.) + +# Rationale and alternatives +[alternatives]: #alternatives + +Some of the simplest A2A protocols could be specified in a Swagger/OpenAPI +style. This would give some nice tooling. However, not all fit into that +mold. It may be desirable to create conversion tools that allow Swagger +interop. + +# Prior art +[prior-art]: #prior-art + +* [WSDL](https://www.w3.org/TR/2001/NOTE-wsdl-20010315): A web-centric + evolution of earlier, RPC-style interface definition languages like + [IDL in all its varieties](https://en.wikipedia.org/wiki/Interface_description_language) + and [CORBA](https://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture). + These technologies describe a *called* interface, but they don't describe + the caller, and they lack a formalism for capturing state changes, especiall + by the caller. They are also out of favor in the programmer community at + present, as being too heavy, [too fragile]( + https://codecraft.co/2008/07/29/decoupling-interfaces-as-versions-evolve-part-1/), + or poorly supported by current tools. +* [Swagger/OpenAPI](https://swagger.io/docs/specification/about/): Overlaps + about 60% with the concerns of protocol definition in agent-to-agent + interactions. We like the tools and the convenience of the paradigm + offered by OpenAPI, but where these two do not overlap, we have impedance. + Agent-to-agent protocols must support more than 2 roles, or + two roles that are peers, whereas RESTful web services assume just client + and server--and only the server has a documented API. + Agent-to-agent protocols are fundamentally asynchronous, + whereas RESTful web services mostly assume synchronous request~response. + Agent-to-agent protocols have complex considerations for diffuse trust, + whereas RESTful web services centralize trust in the web server. + Agent-to-agent protocols need to support transports beyond HTTP, whereas + RESTful web services do not. Agent-to-agent protocols are nestable, while + RESTful web services don't provide any special support for that construct. +* [Pdef (Protocol Definition Language)](https://github.com/pdef/pdef): An alternative to Swagger. +* [JSON RPC](https://www.jsonrpc.org/specification): Defines how invocation of + remote methods can be accomplished by passing JSON messages. However, the + RPC paradigm assumes request/response pairs, and does not provide a way + to describe state and roles carefully. +* [IPC Protocol Definition Language (IPDL)](https://developer.mozilla.org/en-US/docs/Mozilla/IPDL): + This is much closer to agent protocols in terms of its scope of concerns + than OpenAPI. However, it is C++ only, and intended for use within browser + plugins. + +# Unresolved questions +[unresolved]: #unresolved-questions + +- Should we write a Swagger translator? + diff --git a/text/tictactoe-protocol/@l10n.json b/text/protocols/tictactoe-1.0/@l10n.json similarity index 100% rename from text/tictactoe-protocol/@l10n.json rename to text/protocols/tictactoe-1.0/@l10n.json diff --git a/text/tictactoe-protocol/@l10n.png b/text/protocols/tictactoe-1.0/@l10n.png similarity index 100% rename from text/tictactoe-protocol/@l10n.png rename to text/protocols/tictactoe-1.0/@l10n.png diff --git a/text/tictactoe-protocol/ai.py b/text/protocols/tictactoe-1.0/ai.py similarity index 100% rename from text/tictactoe-protocol/ai.py rename to text/protocols/tictactoe-1.0/ai.py diff --git a/text/tictactoe-protocol/catalog.json b/text/protocols/tictactoe-1.0/catalog.json similarity index 100% rename from text/tictactoe-protocol/catalog.json rename to text/protocols/tictactoe-1.0/catalog.json diff --git a/text/tictactoe-protocol/catalog.png b/text/protocols/tictactoe-1.0/catalog.png similarity index 100% rename from text/tictactoe-protocol/catalog.png rename to text/protocols/tictactoe-1.0/catalog.png diff --git a/text/tictactoe-protocol/game.py b/text/protocols/tictactoe-1.0/game.py similarity index 100% rename from text/tictactoe-protocol/game.py rename to text/protocols/tictactoe-1.0/game.py diff --git a/text/tictactoe-protocol/handler.py b/text/protocols/tictactoe-1.0/handler.py similarity index 100% rename from text/tictactoe-protocol/handler.py rename to text/protocols/tictactoe-1.0/handler.py diff --git a/text/tictactoe-protocol/state-machine.png b/text/protocols/tictactoe-1.0/state-machine.png similarity index 100% rename from text/tictactoe-protocol/state-machine.png rename to text/protocols/tictactoe-1.0/state-machine.png diff --git a/text/tictactoe-protocol/test_tictactoe.py b/text/protocols/tictactoe-1.0/test_tictactoe.py similarity index 100% rename from text/tictactoe-protocol/test_tictactoe.py rename to text/protocols/tictactoe-1.0/test_tictactoe.py diff --git a/text/tictactoe-protocol/README.md b/text/protocols/tictactoe-1.0/tic-tac-toe-protocol.md similarity index 95% rename from text/tictactoe-protocol/README.md rename to text/protocols/tictactoe-1.0/tic-tac-toe-protocol.md index 8df4972ed..eec563683 100644 --- a/text/tictactoe-protocol/README.md +++ b/text/protocols/tictactoe-1.0/tic-tac-toe-protocol.md @@ -1,9 +1,9 @@ -- Name: tictactoe-protocol +- Name: tictactoe-1.0 - Authors: Daniel Hardman - Start Date: 2018-12-11 - PR: -# Tic-Tac-Toe Protocol +# tictactoe 1.0 protocol [summary]: #summary Describes a simple protocol, already familiar to most @@ -39,7 +39,7 @@ capture 3 cells of the grid in a straight line. ### Interaction -A tic-tac-toe `game` is an interaction where 2 parties take turns to +A tic-tac-toe game is an interaction where 2 parties take turns to make up to 9 moves. It starts when either party proposes the game, and ends when one of the parties wins, or when all all cells in the grid are occupied but nobody has won (a draw). @@ -69,17 +69,17 @@ communicate. ### Messages -All messages in this protocol are part of the "Tic Tac Toe 1.0" message +All messages in this protocol are part of the "tictactoe 1.0" message family uniquely identified by this DID reference: - did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0 + did:sov:DTUASHgBzCbsNYhMrjHiqZ;spec/tictactoe/1.0 The protocol begins when one party sends a `move` message to the other. It looks like this: ```JSON { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", + "@type": "did:sov:DTUASHgBzCbsNYhMrjHiqZ;spec/tictactoe/1.0/move", "@id": "518be002-de8e-456e-b3d5-8fe472477a86", "me": "X", "moves": ["X:B2"], @@ -131,7 +131,7 @@ suppressing all fields except what's required: ```JSON { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", + "@type": "did:sov:DTUASHgBzCbsNYhMrjHiqZ;spec/tictactoe/1.0/move", "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 0 }, "moves": ["X:B2", "O:A1"], "me": "O" @@ -145,7 +145,7 @@ This is the first message in the thread that's sent by the `player` placing ```JSON { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", + "@type": "did:sov:DTUASHgBzCbsNYhMrjHiqZ;spec/tictactoe/1.0/move", "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 1 }, "moves": ["X:B2", "O:A1", "X:A2"], "me": "X" @@ -157,7 +157,7 @@ This is the second message in the thread by the player placing "X". ##### Message/Move 4 ```JSON { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move", + "@type": "ddid:sov:DTUASHgBzCbsNYhMrjHiqZ;spec/tictactoe/1.0/move", "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 1 }, "moves": ["X:B2", "O:A1", "X:A2", "O:B1"], "me": "O" @@ -183,7 +183,7 @@ of an `outcome` message. ```JSON { - "@type": "did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/outcome", + "@type": "did:sov:DTUASHgBzCbsNYhMrjHiqZ;spec/tictactoe/1.0/outcome", "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 3 }, "winner": "X", "comment": "You won!" diff --git a/text/tictactoe-protocol/tictactoe.png b/text/protocols/tictactoe-1.0/tictactoe.png similarity index 100% rename from text/tictactoe-protocol/tictactoe.png rename to text/protocols/tictactoe-1.0/tictactoe.png From 41fbe0c00b064f24906de16cc8041dd52ab4262c Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 28 Dec 2018 17:16:54 -0700 Subject: [PATCH 12/61] Rename .md file Signed-off-by: Daniel Hardman --- .../tictactoe-1.0/{tic-tac-toe-protocol.md => README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename text/protocols/tictactoe-1.0/{tic-tac-toe-protocol.md => README.md} (100%) diff --git a/text/protocols/tictactoe-1.0/tic-tac-toe-protocol.md b/text/protocols/tictactoe-1.0/README.md similarity index 100% rename from text/protocols/tictactoe-1.0/tic-tac-toe-protocol.md rename to text/protocols/tictactoe-1.0/README.md From 24784cf22a8fa2939b412afa22cd405d7c5619a8 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 28 Dec 2018 18:13:59 -0700 Subject: [PATCH 13/61] Polish tictactoe readme Signed-off-by: Daniel Hardman --- text/protocols/tictactoe-1.0/README.md | 175 ++++++++---------- text/protocols/tictactoe-1.0/handler.py | 4 +- text/protocols/tictactoe-1.0/move-1.json | 9 + text/protocols/tictactoe-1.0/move-1.png | Bin 0 -> 28927 bytes text/protocols/tictactoe-1.0/move-2.json | 8 + text/protocols/tictactoe-1.0/move-2.png | Bin 0 -> 26186 bytes text/protocols/tictactoe-1.0/move-3.json | 8 + text/protocols/tictactoe-1.0/move-3.png | Bin 0 -> 26079 bytes text/protocols/tictactoe-1.0/move-4.json | 8 + text/protocols/tictactoe-1.0/move-4.png | Bin 0 -> 26048 bytes text/protocols/tictactoe-1.0/outcome.json | 8 + text/protocols/tictactoe-1.0/outcome.png | Bin 0 -> 26303 bytes .../tictactoe-1.0/player-state-machine.png | Bin 0 -> 46050 bytes .../protocols/tictactoe-1.0/state-machine.png | Bin 89695 -> 0 bytes 14 files changed, 118 insertions(+), 102 deletions(-) create mode 100644 text/protocols/tictactoe-1.0/move-1.json create mode 100644 text/protocols/tictactoe-1.0/move-1.png create mode 100644 text/protocols/tictactoe-1.0/move-2.json create mode 100644 text/protocols/tictactoe-1.0/move-2.png create mode 100644 text/protocols/tictactoe-1.0/move-3.json create mode 100644 text/protocols/tictactoe-1.0/move-3.png create mode 100644 text/protocols/tictactoe-1.0/move-4.json create mode 100644 text/protocols/tictactoe-1.0/move-4.png create mode 100644 text/protocols/tictactoe-1.0/outcome.json create mode 100644 text/protocols/tictactoe-1.0/outcome.png create mode 100644 text/protocols/tictactoe-1.0/player-state-machine.png delete mode 100644 text/protocols/tictactoe-1.0/state-machine.png diff --git a/text/protocols/tictactoe-1.0/README.md b/text/protocols/tictactoe-1.0/README.md index eec563683..46a7999c3 100644 --- a/text/protocols/tictactoe-1.0/README.md +++ b/text/protocols/tictactoe-1.0/README.md @@ -1,7 +1,6 @@ - Name: tictactoe-1.0 - Authors: Daniel Hardman - Start Date: 2018-12-11 -- PR: # tictactoe 1.0 protocol [summary]: #summary @@ -10,11 +9,6 @@ Describes a simple protocol, already familiar to most developers, as a way to demonstrate how all protocols should be documented. - Note: Read the document below as a prototype and a good example - of how to go about documenting a protocol in a HIPE. The format - doesn't have to be slavishly followed, but considering the issues - covered in this example should be helpful. - # Motivation [motivation]: #motivation @@ -37,7 +31,7 @@ capture 3 cells of the grid in a straight line. ![tictactoe by Symode09 via Wikimedia Commons](tictactoe.png) -### Interaction +### Key Concepts A tic-tac-toe game is an interaction where 2 parties take turns to make up to 9 moves. It starts when either party proposes the game, and @@ -49,7 +43,7 @@ from the other player. However, they do not scuttle the interaction. A game can also be abandoned in an unfinished state by either player, for any reason. Games can last any amount of time. - About the INTERACTION section: Here we describe the flow at a very + About the Key Concepts section: Here we describe the flow at a very high level. We identify preconditions, ways the protocol can start and end, and what can go wrong. We also talk about timing constraints and other assumptions. @@ -63,29 +57,62 @@ not need to be trusted or even known to one another, either at the outset or as the game proceeds. No prior setup is required, other than an ability to communicate. - About the ROLES section: Here we name the roles in the protocol, + About the Roles section: Here we name the roles in the protocol, say who and how many can play each role, and describe constraints. - We also explore the issue of trust among the roles. + We also explore qualifications for roles. + +### States + +The states of each `player` in the protocol evolve according to the +following state machine: + +[![state machine](player-state-machine.png)](https://docs.google.com/spreadsheets/d/1hwbJ_sgaobQlNinMQlRhE52EsAxh07rmBKl-yKq_0qI/edit?usp=sharing) + +When a player is in the `my-move` state, possible valid events include +`send move` (the normal case), `send outcome` (if the player decides +to abandon the game), and `receive outcome` (if the other player +decides to abandon). A `receive move` event could conceivably occur, too-- +but it would be an error on the part of the other player, and would +trigger a `problem-report` message as described above, leaving the +state unchanged. + +In the `receive-move` state, `send move` is an impossible event for a +properly behaving player. All 3 of the other events could occur, causing +a state transition. + +In the `wrap-up` state, the game is over, but communication with the +outcome message has not yet occurred. The logical flow is `send outcome`, +whereupon the player transitions to the `done` state. + + About the States section: Here we explain which states exist for each + role. We also enumerate the events that can occur, including messages, + errors, or events triggered by surrounding context, and what should + happen to state as a result. In this protocol, we only have one role, + and thus only one state machine matrix. But in many protocols, each + role may have a different state machine. ### Messages All messages in this protocol are part of the "tictactoe 1.0" message -family uniquely identified by this DID reference: - - did:sov:DTUASHgBzCbsNYhMrjHiqZ;spec/tictactoe/1.0 +family uniquely identified by this DID reference: `did:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0` + + About the "DID Reference" URI that appears here: DIDs can be resolved + to a DID doc that contains an endpoint, to which everything after a + semicolon can be appended. Thus, if this DID is publicly registered + and its DID doc gives an endpoint of http://example.com, this URI + would mean that anyone can find a formal definition of the protocol at + http://example.com/spec/tictactoe/1.0. It is also possible to use a + traditional URI here, such as http://example.com/spec/tictactoe/1.0. + If that sort of URI is used, it is best practice for it to reference + immutable content, as with a link to specific commit on github: + https://github.com/hyperledger/indy-hipe/blob/41fbe0c00/text/protocols/README.md#messages + +##### `move` message The protocol begins when one party sends a `move` message to the other. It looks like this: -```JSON -{ - "@type": "did:sov:DTUASHgBzCbsNYhMrjHiqZ;spec/tictactoe/1.0/move", - "@id": "518be002-de8e-456e-b3d5-8fe472477a86", - "me": "X", - "moves": ["X:B2"], - "comment": "Let's play tic-tac-to. I'll be X. I pick cell B2." -} -``` +[![move 1](move-1.png)](move-1.json) `@id` is required here, as it establishes a [message thread](https://github.com/hyperledger/indy-hipe/pull/30) that will govern the rest of the game. @@ -105,12 +132,13 @@ with columns A, B, and C, and rows 1, 2, and 3. `comment` is optional and probably not used much, but could be a way for players to razz one another or chat as they play. It follows the conventions of [localized messages]( -https://github.com/hyperledger/indy-hipe/pull/64) +https://github.com/hyperledger/indy-hipe/pull/64). Other decorators could be placed on tic-tac-toe messages, such as those to enable [message timing](https://github.com/hyperledger/indy-hipe/blob/2167762c31dec10777a36d14c5038130b1a06670/text/message-timing/README.md#decorators) to force players to make a move within a certain period of time. +##### Subsequent Moves Once the initial `move` message has been sent, game play continues by each player taking turns sending responses, which are also `move` messages. With each new message the `move` array inside the message @@ -129,40 +157,21 @@ suppressing all fields except what's required: ##### Message/Move 2 -```JSON -{ - "@type": "did:sov:DTUASHgBzCbsNYhMrjHiqZ;spec/tictactoe/1.0/move", - "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 0 }, - "moves": ["X:B2", "O:A1"], - "me": "O" -} -``` +[![move 2](move-2.png)](move-2.json) This is the first message in the thread that's sent by the `player` placing -"O"; hence it has `seqnum` = 0. +"O"; hence it has `myindex` = 0. ##### Message/Move 3 -```JSON -{ - "@type": "did:sov:DTUASHgBzCbsNYhMrjHiqZ;spec/tictactoe/1.0/move", - "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 1 }, - "moves": ["X:B2", "O:A1", "X:A2"], - "me": "X" -} -``` +[![move 3](move-3.png)](move-3.json) -This is the second message in the thread by the player placing "X". +This is the second message in the thread by the player placing "X"; hence +it has `myindex` = 1. ##### Message/Move 4 -```JSON -{ - "@type": "ddid:sov:DTUASHgBzCbsNYhMrjHiqZ;spec/tictactoe/1.0/move", - "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 1 }, - "moves": ["X:B2", "O:A1", "X:A2", "O:B1"], - "me": "O" -} -``` + +[![move 4](move-4.png)](move-4.json) ...and so forth. @@ -176,19 +185,13 @@ https://github.com/hyperledger/indy-hipe/blob/6a5e4fe2d7e14953cd8e3aed07d8861763 message, with `explain.@l10n.code` set to one of the values defined in the Message Catalog section (see below). +##### `outcome` message Game play ends when one player sends a `move` message that manages to mark 3 cells in a row. Thereupon, it is best practice, but not strictly required, for the other player to send an acknowledgement in the form of an `outcome` message. -```JSON -{ - "@type": "did:sov:DTUASHgBzCbsNYhMrjHiqZ;spec/tictactoe/1.0/outcome", - "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "seqnum": 3 }, - "winner": "X", - "comment": "You won!" -} -``` +[![outcome](outcome.png)](outcome.json) The `moves` and `me` fields from a `move` message can also, optionally, be included to further document state. The `winner` field is required. @@ -198,53 +201,23 @@ This `outcome` message can also be used to document an abandoned game, in which case `winner` is `null`, and `comment` can be used to explain why (e.g., timeout, loss of interest). - About the MESSAGES section: Here we explain the message types, but + About the Messages section: Here we explain the message types, but also which roles send which messages, what sequencing rules apply, and how errors may occur during the flow. The message begins with an announcement of the identifier and version of the message family, and also enumerates error codes to be used with problem - reports. + reports. This protocol is simple enough that we document the + datatypes and validation rules for fields inline in the narrative; + in more complex protocols, we'd move that text into the Reference + > Messages section instead. -### States - -The states of each `player` in the protocol evolve according to the -following state machine: - -![state machine](state-machine.png) - -When a player is in the `my move` state, possible valid events include -`send move` (the normal case), `send outcome` (if the player decides -to abandon the game), and `receive outcome` (if the other player -decides to abandon). A `receive move` event could conceivably occur, too-- -but it would be an error on the part of the other player, and would -trigger a `problem-report` message as described above, leaving the -state unchanged. - -In the `receive move` state, `send move` is an impossible event for a -properly behaving player. All 3 of the other events could occur, causing -a state transition. - -In the `wrap up` state, the game is over, but communication with the -outcome message has not yet occurred. The logical flow is `send outcome`, -whereupon the player transitions to the `done` state. - - About the STATES section: Here we explain which states exist for each - role. We also enumerate the events that can occur, including errors, - and what should happen to state as a result. In this protocol, we only - have one role, and thus only one state machine matrix. But in many - protocols, different participants may have different state machines. - This section has been neglected in many early efforts at protocol - definition, and its omission is a big miss. Analyzing all possible - states and events for all roles leads to robustness; skipping the - analysis leads to fragility. - -### Trust and Constraints +### Constraints Players do not have to trust one another. Messages do not have to be authcrypted, although anoncrypted messages still have to have a path back to the sender to be useful. - About the TRUST AND CONSTRAINTS section: Many protocols have rules + About the Constraints section: Many protocols have rules or mechanisms that help parties build trust. For example, in buying a house, the protocol includes such things as commission paid to realtors to guarantee their incentives, title insurance, earnest @@ -254,6 +227,13 @@ path back to the sender to be useful. # Reference + About the Reference section: If the Tutorial > Messages section + suppresses details, we would add a Messages section here to + exhaustively describe each field. We could also include an + Examples section to show variations on the main flow. + +### Collateral + A reference implementation of the logic of a game is provided with this HIPE as python 3.x code. See [game.py](game.py). There is also a simple hand-coded AI that can play the game when plugged into an agent (see @@ -262,11 +242,6 @@ hand-coded AI that can play the game when plugged into an agent (see The game can be played interactively by running `python game.py`. - About the REFERENCE section: If the MESSAGES section suppresses - details, here is where to exhaustively describe each field. This - is also the place for multiple examples of message flows, and - it is a plays for reference implementations. - ### Localization The only localizable field in this message family is `comment` on both `move` @@ -274,7 +249,7 @@ and `outcome` messages. It contains ad hoc text supplied by the sender, instead of a value selected from an enumeration and identified by `code` for use with message catalogs. This means the only approach to localize `move` or `outcome` messages is to submit `comment` fields to an automated translation -service. Because the locale of tictactoe messages is not predefined, each +service. Because the locale of `tictactoe` messages is not predefined, each message must be decorated with `@l10n.locale` to make automated translation possible. diff --git a/text/protocols/tictactoe-1.0/handler.py b/text/protocols/tictactoe-1.0/handler.py index 49655831c..ab21c0194 100644 --- a/text/protocols/tictactoe-1.0/handler.py +++ b/text/protocols/tictactoe-1.0/handler.py @@ -3,8 +3,8 @@ import game import ai -MOVE_MSG_TYPE = 'did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/move' -RESULTS_MSG_TYPE = 'did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/tictactoe/1.0/results' +MOVE_MSG_TYPE = 'did:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0/move' +RESULTS_MSG_TYPE = 'did:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0/results' TYPES = [ MOVE_MSG_TYPE, diff --git a/text/protocols/tictactoe-1.0/move-1.json b/text/protocols/tictactoe-1.0/move-1.json new file mode 100644 index 000000000..2a4f2b2b3 --- /dev/null +++ b/text/protocols/tictactoe-1.0/move-1.json @@ -0,0 +1,9 @@ + +{ + "@type": "did:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0/move", + "@id": "518be002-de8e-456e-b3d5-8fe472477a86", + "me": "X", + "moves": ["X:B2"], + "comment": "Let's play tic-tac-to. I'll be X. I pick cell B2." +} + diff --git a/text/protocols/tictactoe-1.0/move-1.png b/text/protocols/tictactoe-1.0/move-1.png new file mode 100644 index 0000000000000000000000000000000000000000..22510bba738242ef347ab1a1b1fa0f30b7137052 GIT binary patch literal 28927 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

crGu~Y?qj+22vO_YWx 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 JnS_zw{{kKL3Z(!5 literal 0 HcmV?d00001 diff --git a/text/protocols/tictactoe-1.0/move-2.json b/text/protocols/tictactoe-1.0/move-2.json new file mode 100644 index 000000000..3aec687b3 --- /dev/null +++ b/text/protocols/tictactoe-1.0/move-2.json @@ -0,0 +1,8 @@ + +{ + "@type": "did:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0/move", + "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "myindex": 0 }, + "moves": ["X:B2", "O:A1"], + "me": "O" +} + diff --git a/text/protocols/tictactoe-1.0/move-2.png b/text/protocols/tictactoe-1.0/move-2.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ea3aa00324234ab707a75aee23f615b1383a6a GIT binary patch literal 26186 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 literal 0 HcmV?d00001 diff --git a/text/protocols/tictactoe-1.0/move-3.json b/text/protocols/tictactoe-1.0/move-3.json new file mode 100644 index 000000000..742a1bb7a --- /dev/null +++ b/text/protocols/tictactoe-1.0/move-3.json @@ -0,0 +1,8 @@ + +{ + "@type": "did:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0/move", + "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "myindex": 1 }, + "moves": ["X:B2", "O:A1", "X:A2"], + "me": "X" +} + diff --git a/text/protocols/tictactoe-1.0/move-3.png b/text/protocols/tictactoe-1.0/move-3.png new file mode 100644 index 0000000000000000000000000000000000000000..c29dd14e7dd192547c958ca0d72cf02bfb7aadaf GIT binary patch literal 26079 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 Ik~R$ZAM<=LSpWb4 literal 0 HcmV?d00001 diff --git a/text/protocols/tictactoe-1.0/player-state-machine.png b/text/protocols/tictactoe-1.0/player-state-machine.png new file mode 100644 index 0000000000000000000000000000000000000000..d13ffcbae70a11599d822a39c25eb707779c018f GIT binary patch literal 46050 zcmeFZbySw!)-Fy70wSQ2Qqo9wr$~1RNOyxYNGYHglz>PhNK1EvfP^3-B_Ji8N;mxG zobSKw7&_p&*R$@m=9+O`*IdJAYAUigSfp4;NJu#Ha?%<|NGPx1 z=ef)1@Gqb3E;AC+wOn5w zbAm>+ULxJAAH${|#ZOPmYiQ)r3a?)!GM0aDLH|TJ8QE|1bS|*?gz|iTyx>y@X>-An z>Sk?cYto`|piy&he}DgyYNS|GaX|g1im&*M+II&(14nm`$1H67=r{pVfshzjk=bUF7 zMTZ0YRpFN|Z9W0TCAwx245ZEG2Ara!`eondd|$oV!{XOp zwH0=~F-UFy?9-MT>uf@`_)g)MH$E7f7R}7JGsTTIt6yBCjV?(Xnb z4Nd7?VepEMa+&62RrO1Y-`K2XuxDl`+UHg36Ug8wzAn_|Ew`GKQDm+D zYF9p@@0{708dUPto`3ZIPyZ|Q?XdmuQ;;rO-v_>sX=r*Tg)(MgKN5~ z+%7TadcowwK8M`Go5$V!l;dp^>uDodUi6IX74!EI+&~v zHI0N@ekEh2ELR&uX^A+$c^;9nBQonWqN&NmEpWNGuM;2mB`o{=;M=r7nxLEEQR0UXRO;8oRb% zhH|-&2DST@k?Y=kp7;EfUQ@Vy;fDIXB&}Y?gz=x2xKp8RQZ#6(A1|3Q=FhS$kZPus zF3hU#^fvg{GZg!ue0~{=N&3mkqjIv&wII(h?LHZeX6n>u;x-$6f{&*6S4O_l5V%P7 zu~=zO5n&ae6)cs6C*?&qdGd8FM(8_}eUCl66nR>PPyNtw_BF4N__MWMf5J>WJR)v> zyO84%^lk!S%RqZBB3{B14o1#e51seI*^NRk3<=Arh)%z)&8HH-?y@0PK$jTfyM#ad zG38zEMEH>L)&zNCF_%6`y%x1(O!4PLqSe+x0sCI%AKvPE4J@@W@7;L^>Y2ZDWR`BF-hsgpQOBy zSx-B4cdsZ*jmRA0qUR@Q5Bp2%-#*!F>=-~rR z%V%y%g@Xe;y*tTuN2Q6YR6XSm-G;l9=tv_+!Cl~6wpZmY6CatM? zp}zelBXIG}L-n6Yi&cV`=}D%CPNkIS#%V32j3SytDK5DZd0_f{MtidqMKeQLg+&_G z{3}>o`tj=oBE0!ytCdwkZRDZqpIIpKNR-W00;ozdx|4-fOVrJ0nBlBg5tu3~ul7nt zZnfTCX_meBXujtgPj}-Orrxt}y;}Wfa(s8|@0PrmxHIn|;f2;J(ID}8jV4>Wc`cf( zDSFpFu1*@K?}oDfbMqA}o!|EltC}7Ta zEwtzsx7Q{rWBfa&fbciB9&jBa-yMi?-uQC%Lq#YuTBrWY+vivFq-XCA?DZawZb$Ht z9}w8@wPx+EnkA_`xwgI-vlabRAOnkM==p%-mw43|3zFS-SsWcVE1nVPZ5!dc1ciQL zd>)CSIK!kACxtfJPexfvV`R>KocLi)Q?xKd7-L(fX6>a+m4OoZW0YSj+fMk4Ge5J~ zPthV=eWc`=t0QiZwk(o{74>)LtjFemIx{q)WBcl=VSDp}13jwfIsb9ZzQ3tnM%ZPv zVSMU?vBmj22lp$R%oykE<*Gx-8yMTY&fdSG%D@ztl;a_>U?4#`Ai5p%D5OnGSM}OU zx%<9Dnw0D{@`GbxH+fQNt}!aKYrZXfS|_D`b7?rv=uzm6JNd(d zvPe=`)uPenVUMUJyfb%N9G3C%%W0N5-X2nBJ>90(lYCsul3JhQfs83Jv-t_nF}CRT zP4be0iY(%R5WBliiBuWRkPXsm;sWfapA+28Q>|;meIzVF8FV5d!z)RrE41rPtw?e; z>v?oiLy`Pz(>Ka@wxcs==hZO2e10={M{wkeY&uaHosv|L)~dR1&$Q+jYdMv7#0$ZK zvhRJ<1Iam(c3-pd#?c>LwfTIAcI8r+!^YS(7O|7rDw?av*%F`KaH`%a+jb8d)TqsC zSw|Fork$wRy&n0(0d2+FjRLGl2q;;Y9A@7~ibj~bKG=0EJ> zl9axZttj{KmZN)yEP;xc>Z2$8YM8eKwgn%HFz97mk9zz$yUy#GYSZdt)i_&EhH6@` zJM7uH?NNs~x>2@bcc~P&B*(%X*v3hCYS9Qfo(VqYX>ors$LkQVD!hfX<|wa~_(V%> zdikN>l!xgRG&yz?ZXaRILJ~fuC;CPNPf`0mAk7PlRSYX6D(CN+1*8tQIrfaJCCo*o z&uZfjUsm*tlvPWxrq#Pc;E9<=l3GOJhZbUOaX|Mg=kArIJQc$pyl>qVd@}5wUHE3E zJ3;ZgB#affR29f}-#2d`N_TI(c>9(wgow`gX?Yxn4LV**B*XPLcWBkmdESXnJZHGa zSlF~7UUn&=(Qr>;SCG#OA ztGr`wS^}4qR5|2u+^|AsqUVyvY&$YzzZdHbmAsu~dbN5RpCB~7^0_Vn)LDgz3YH<% zCQXj(@1txaF%Ey)KN+fAtYO$i!tWQ$w#UH;e{45@K~2Z;STDvx?}`=*Aub*R4Fx|{ zJQ?9@DdGcseEr0&$)A$)RG3o&81Lusjnxdl=iNcmrJQ|P(E3OMTc+Xh(F#Y&^hew2 z#aUCV7%}9ZO+U8qBQjjt?+K7?&5X58AK8mEu@fo0j}LuB%jAZwOKZ@A^;U-Gd|cvM zlJid!5!MLdyWxouV(Cwx_3^#D-WA!Ex*=gy?n{zg@8+doE!8;}MjV8NT|UZ9`z`g` zE)%C+>s&hFENYbymZVd3p?lHWw6|tCZU#@@hd3x*k-s}@apT%1&cIcS*#x0=(mEd- zztuyX&c_s6^6IZ2eYf)#!JwDUUhDRk#@3M6 z)i{*e7%_>vbb$I1?Zh*|JmnJdy%Jp7ZY)OBu3do-TzK1h`r=7Bw!tdR?Y=F(<{BZi zS4nEDDjmCX)TtFo7j;-DGw(~j z7ALP=%T9-wz00(=+A;0xVPmLag5gYT#TLA zj8-~s$Ko{j1!~l1E}wD9Yz%$DYvfTPQbh8Wc}x$YcE@AWKGzRNWUw+7qTdM;rpQ8* zj&+LU$|WI`idOq!TDg-OESE{+uhx=TTfV0MY-NTo=@QoQToZL;0!@U;^yg>F_fa?~dbp8<;s&HbBq6FJE;*Y?GD zDdtuw-hQs-?&WXizwXF0PhGB-CI291O*?=V8S<(9W+;BPE*U?14X$XUNzOD)71Bp< znNz=~`%+d~S1u^1@Ol%Co;ciFe$=(Di84PVq^(ard#jSajJPD&3TbrO-+sswJ>JOu zk*3Z%_F?c3`WxR~RS{|KN(cU+itgj!)Okj=qS*B^UkYy@t7$mfE%->#>DX^HXqlSC zAi;iUV?-Fmu2L0aW4|ay&{l%7-=$_mhF>O z<&2&_LrL+Oti@Bz>RBdtwyV^9Q zmr;yIR2re5dM};IOIcA%l;7gfxW;GnG24SlQA#}fJ8BVSrGx|F^YKdWy%c0LyzBwz zuwk@@9y!%9gVzViYJM;2w$A-4p72Q9q)?|EHv~2keDCT}c2S+VSh8Ctp;mOhTDkBY ztKtU5geP7^tnB45#r&_==6;z-`P1|;b;)Azq|`FGX51y=)*`@Bnnu!=Yw8$bv_LnA zk#zseqTTg*wkM3)-X6zTo-##nhc1~xGMOV^CDvkm#hld1ncsP^yYXu3V7Lis9WnQd zttYQJk2p%nD5$lKy@Id&L=%?{z4Mg_J9ON`(7nG$l6fZP)AK8&`@0r%2Gl{ZDm#J? zBu)FW+-}YH`r>?KB>J{RfI-qnGj{zF^E%3}{ku)wilW8~3fXH0nQH|ZMz0;}uO4qz zIBcR%bP*J&Ouv24#Q#`7qe}L6YC1_3$`=+YZ#Lbe3LB{ukCQ#(LnU?<4<(^2!?5p< z-noTR^C16FJH`=6hI#dvceboK{Q7%b+F~UV_IqTu;fUm$uT)xA2&X zN4UeLz1~qr(d~*^rl~FGe!zJ`|3TXLvEhq_YMb7OkDk%2CdPPjMtqfN9R#-2C|Ath zdUH#XNCo5-V_Ddx9Ce3W=?zKenu#Q16N<&U`#6mLmIRvj@(C@@EBgE@Cl>s~tYOW5 zx5qCk+jGKYE?-jOO}E4M>zbuG^Gkh^+d|v^tR1B+-+r(Yt$k@l9aZ1u?a9_eyeiGY z{c5jNjjW*#WuAa}Qy#(7+)TwbVX|uj2l#TvWw+F>hOvb%5X5agf0pU6uQfOqTYULO zkk9K=G}>(9a)r1?byn|MbXH_SJc`Wfczx7NZnc}3^5JiGUN8mb65r+ANT7%z3_!~g zl{^Z=EHS|?KFYozku)CaieO?}U}j@Raz@h?LaJE~b3x%^#5qzVZt!xtn|dkd4leoA zzGQ{v%io?g6ywz35=-Qhb2rg4k0i)5xWg1xTbuUT?bJDcQ>w}n zRWC$)YHop>;9s;AxzH_lC{BNz7`*-~_QWl_IW@D))9V7mYVKE_bm)sQBqZE+ThOd@ zm6e3dogLXsEu76P*}NTHK+{4(5)t=yF*Uchbf+@2w6=8;rT$spOig8LAxeFZSD8cE z<&LF|t(>o`rKYcnmbtIJxu6BLxEPj*w-8L=Xz6ZBVVNr>=T388bNXz^=1^gyTZR76lBE-(_ z<>kfZ#m(mIYR%3mC@9Fz!NtzS#R?->-F%$fO}$y2+-ML}{4s~LrJK2{t&6*@vlA6! zPE#{y4|h>&YIsid=j8Cz{H`~A_~#1{zyF@z&E0}s9)970{lEZrE)EU>Rt_#!E`V;c9Mq z*VEF;o#wAEb#d@;`|CSB+$<3v{a&|&g%vw2>i3)f`W;z$WwpP52Vq8QTSu4Q-$0E1 z>qrapzmIeAaCP`S#=@N4(!tUZ7UBjobN-SoI z+f_)~+1vy1Qh8}nYQ%blES$}4ErfpmXlBL7#bwE5#VWwhZ^g>P&BM(qD8OgR%EM>Q z&B?>ZZ*FD9`Io8Wo!s0_oy;u}Q^DkHwlEKm6|bNrhk!Y&rI|T=QNWa!Re;Ni2Y$5> zfrVf8y6=Et2n2L*!Lx7)4fQ!|X*Fun$ho8%W)y#rN0M^CF z&1=rZ%Wc7F`gs< zjgyy$kAsJYLqI@~pNos1>mP%3EM48e%Mp`uaT{;}DAJl6ZmV;?*{*GGilm5dpZ68o97=x z|2~VPtGk!8tG%kLs+paox%+=V&%YY{_n9;xA-cJ{`pEwuHub-Z6ZylZ<>0%{u0DTx zzozAbKYsfoYdP5dHWd}s?@S?NYL2j?D7BlZr=`X3^8-8n@yOi9)XCZsQu3ei__xn( z|CO)var1*)bFlIWaPYA5nDPm*nwgn$vT|_=lGYG` zaLy2azt5S9@edbe`sd+ZHkJtgB*&^k&vj65=ci6i&(j6zE%5LNRu9g6 z7vkop-1@y!mr{2``-OzEVx=zMDhk%jQNgF6V8gui&Ok0eQR-A_nGQ1q4<3b}y+Ztp zCxs%9`1kUyNAG@r93`Rg`{T=)w4whu<9;xhIc$c1_#pLla4@g1u%ol{>E{&T%)u3> zH{|Th%rxxmswd5g@oYF#s)~w(=lcf-oo#J%b&mB;lcuJoZ&8!cb^5goer9V6IpSkkLHB}vIgzVp$tH@?hR zkG$8r&COljTE@i0wA#l%t#xm0rZw1Z;pHy30o42-?Jz(pFjAiqt^_O(X+k%2e`Bk>n6P5irIXMLv9(j3r3YVFP zUQPd4%2W@Z{}77pbFxvrGFnU-DR#{0+n8EC<@c{Y$KJD9DUMCo_GyStm^e$^Fm zadDkuqwx6nQIF{-ttK@q&WWp|603Wx2dl)wo-E`-?h;I)9cHE*GOSlq^W=tM>8`sBw`_VMmSH0@rq~Qf&+P)4BOk=Y6|LxhROi} zVn#+r#NqKe@o8zQo}PRPOykwgk;TRAE_r#};^LG+&!1y$@9b=CZ4I!k#>K@Yi#{Y| zXJ>~!j^=0YMvx1;?yu{C%|CQS(;$Cq@No-1V2e*lQ8qH70IQUgl+Y*HDJm#*b#=9L zcRz#icAcKJ`T4h1(!`YEI6RY)&W`uy%KOFIy1OxvlKN!S)$!4Tk)55LZ{NNx@Nl1H zW1`x*th*vTJ?Q;=mdC-t_Z>6}6=j2({7=4C+TZ&=IazsNZ*MQJsMzLIJy>ckYhYkN z>esYc9uN?aEa--wqLOoIeh-ICAWFMHXLfNBUE;w5PMrd6>|B);q0q=k-1GDEd%fkb zOGJ$1<+VbLeEFj0Xbg+4ILkAy)MsL2bK3P)v>h6HFuZZ!+gsr3)vK(VbEii;2|Tv1 z_AichmR7#JMGXxNB@+)wh9j>K3Qrmw7a@c=cG8W%r!I5%E|bLBrdP8j1}=pb;fuRW zSz1m`MYoxl)cKN>9jBWb)ys`tUCYY!3+-k(P*yiBvO zvXXapaenfXf1<)44)#(mGAep*zxag#Nw~}<#^Ba;og#xg|Ducxsm7zlB%J-N;d{o~ zmX?;v*=-DIeqR}ty*9t+#cJ4rcjw!W7U4vAbibn0PraR0!E)gX|fQ~l<&(@49_xOh^8co~K7uMD$Oadu=mv3on zXk5ghgZsmar98HnOhi)K_rK@b6geADg3lNG{&>bPv^iNH z*Jq`vz~u3x9dmEZ_(C7~Ha)!ztA2%?VU3IA#`juH?1n0*$$UstnS~6zyxQbqe!8N+ zT2QgnG_#e|Ul6itz$-JEgL7C7#uZZwN)&jI0f)?r{wh-ZyrzmB!W|Ng z9`Y)G^HI3(dTA#q+N*+l#X3QVr1d;Je7MS-gILSfHcvyrwm6(ZRNrx|?C#ktZlGGw z>Tp4Peo>JVo}7$~Og_#{KASY;p|Nu7`&Vc^gi=U(?PA9(Y-4;kDo1amlaY~WnVP=U zP{=!&dZ>!L+KNG`_29vS)iLWd?V#f&@ryAFq4v(s0>~NFSZV_U1FMr>)7lUV;Gyy> z?m}6ED?|3hjoD3yKd@P6PG*8}NiP|wsHm(GH6Mm1a$BnuV5t~V*>VsMJ^b02({#G6 zxUjU8gS590Z_Gy`XJu*01b(ALA9LIvc%E71I04reeom$TTu@|hd>4e?>TgIfbjhnw zKGR;bs7_)#?w*nQM3ti^;%^eavktE4ZWM~vXpv!M+1ErKr`u5t<07xI!=hYo(KdG| zUzfX`HFSPOuMyHqraFB-~a!q+M|3P4}SoHA*+akdHnd@2wG}^Er+WF-EaKkUqUi{?%@{ ztgI|HCME_&OJ6^+OqZpnwN(=NHXR)Vb8Ls1`p<@)2&jNbkhJXZ1A;zJ$5Tx&~ zj}4kp=`~js*461x7(tkGCH3hmTN*mPA9K)wB!!qLE;g1Yfl%0U9ehO4Eqh z+O9Z7#76`B9P;l?G=op^?9KU)HHqY!;26j45%z)P{M?Q!>V00GI)iGemTV-&a6~hk zoI$x&IGlD!2->Aw$dkA0CyQWRu}MiuT*Ox(AyeG2|Cuiq7qYPkIgBobUz~MEbRj<;H0233FF{?uCWkN#2(9lr&=-SHnT5cprxFV;&+Qx+( z_>%U$&KxToC#nWc`c{VWt|LW6L>wL-M#aPg_gT@<(4ZC!W3^CT9Lg3(<__CsWoJK0 zPEOWQZ7lcQvqQ?r$fy{lrl!7(jZGsen&P(fnRj`R1Rwu_vLQ{K=SKdSA%BOet1A~T zFK_s3-UOwZ`g*tBWpyL}J#9Xx@3{-kliLs-(s%DhM@6+fyUxJK#Pl{JJr3{*2T?CYcqe3_O;2~Kf^Tqt&X+x7gYKk(J7S6>~dNGK`$qi)?<26M1C z{6Z;i+$Zf9*|`EPWAk7}X)?6ZdAe!*^l94@oVjROiUE|0*U~aFKi1YhEu{rU7!`L; zPp3f%mibhuU-=w-p2K}v?flnMaXd1z-gojbU7tSP$r-ej%$;<~$j)BmQZ>7$}x*%U^BsHeY$xCJvHFi)~YYD z129abATeMiALZY^+4#`w3C_)ruw?+8EJh7)hK95}H^#GY#%srUnx=eM05+ZukxGj@ zj#tc{9ZWC9sEQ59h@r;5ehmggkx)}pi;<*i`I@CzI zy&e?Se?u9+RB7BC(3>J0U+cE?A!OCC` z^73?ZV2q>|_~O#%l(_`!)Y+|0O6%n>Z?&|vY>+)u9-(4n46f)_*x+9rc8dSn+Z(pR zs~P918=1>DHcA7VqM)J*daT|+RMKL>@M13tY#bX)9w z3u&YMVP2=_fHRS)6zxlZa<_jFf_XjBfS!W`uVx61f{3V7 zQ&se?hX=1q-pGIr&o*RaR1TkQ3s_UvM)mY(pbVEWF>T9U@A$g9xeb23xYvA4aKFl7 zRyFYW`gI1CdE<-YQG%TJc|QkaDLYI!ejUz5ayw6nO!@67JNmw(Q+&;1C)PNUL)f_c zRZ(QC{d&X6X1%`2-sw(1f33q=!^L8fv-ic>L8ax|v`fg7CtMHr9U{mCrR3!?A)a39 zXnIxJx{IcMyn%;@aGuJfC~{#>15HxnpTF^3fNQ*0B2QA^D!7|EfG(WuU$x*|!+DxH z6$=WAio-*Bnw5_(o$POD>gnm(eSIfCZcWIdn~p%@mvX(Pd}N_6czRZ?juxl!>DM}` zDLObf1lwB3gp+2eBnu2UEPXx>c8t{+w{cv>v8wee=>u=jzBoUt^f#(;dFu;lgdn}? z{Mg=6q6?N6S6^RW)r3LmrQ~xF?b$k^%&!?^23aY;|>Y zRSIM(X+uDMV-+@bB~T)ONyvqhaLe3Rb#W=tuXai)o7f1K;UDdvC?Ijz*{uI*H{s&$ zu0gwu`ii@3NRJTheHY_YH zXXoZJhlv6CmX()p{rY9Ie>9>~5C`ZVociW)%lzVEMl3ZI)eMGDRrRnPov`ptW8-PU zlgu#(J~o4zpr=neRkv?kub=!JicRF==5{g_qrJ4a2vz1X7FL~;t&s1ojhVSQfF)c2 zzx2$^*zk4qGw~!%HMO8&JIB%qsmbe68JU@a-oH#@{MCxBN&SsSUw!2NdTz{~qmn`` zB4V)lB{UYh+gUy=?U|Ku)XJW3AyZA3tMnZ^&g@_(qNG#>=7S)UNd00b4&|r`Mb@Ne zH*EcAHkuK%PI>D&?W3CL^{K`r`55{K=chga5Zn9{)7l7yKwLBvo)X%Ryl=HCx9y*5 zGTLmu2mr4Nefku`u+BX?1i?mVqi$T-2jt3^19q6muf2oN6t)IqvK@bm4iA*w5iIwW zwb!gd7#qZ@~hlh8Kk3U6aH5J=y=N zVEj*y6Tevp6@spts)$xp)bQHxJ>U?xwYAX^NEe`Vmy~eGU%s^8YFdg$dE)nC z|0}uWl$}fAT1Bq|pQe`9(ELLn$Tf9!=Oz<63U3EjXsn);FCUfm zb}&a()5u8WU~}?;i%S&R5v6tcn4E&bhv8uYlGx+sw>33yc6Z$cBaN*!XnZaau^U+c zDsMM-C%l!FmEL5*7?@Gf>{O}Hs4+2t+gd|i{noQBZZ%EK zHjrD6mNO%1InQMgi-3o&i@hZBFW2PkXz#anbc9YgH=oH)TIuKzf_ufZ6a7HvgqkB0 zNf8bRkoHLp8^jf;H?KktqeDVNOZ|>qfmS+fvZCj<>Yb^Ya02Y24u+}o zSUX%TC=Lq?OMiHt4`jaAEqx3Kt;Fl6(f-Cn=eJVxS}0+a zYzhFUO^>!0h{I)|^rljt>cZKamgCay?Cj{(xZG-cin|0F%nc%^x0;y*kNZ&Pl{8j+{dZlKUIyySOdrmkiC2(D`wqBy7B}b6HRKM-+BraSW zz^5OuUG40Q45tNfad8zC6i81iYzNU}x)C^Hvd*K;h6k{6+iTYQ%Y!+%AinvX?Tua` z<_MZVO9CBRIfxvv_K1s>5_s3TQU78yg7K>ej7W?wj8edV7^1 zY!Ip#5DPLfKjO@Ru;SvM+LZkrFNh%H5{G{*5c3%|40FB#+~RcgUh@y2zw_WU=3s|E zfgyJ0Ko`K04salEPyo8RyJx||=0Dn>dHeX3I!y{8m@h0D01Y+F0{dimNy>`_G95?& zZEpRdoq(oRChPf&8@90sUxW&8)?^M$I{5jCfL&qP+OiVFJfG9rRVSU3rs0M!Mg7${ltN=ofEJOI?Z z+5(INdRLvz}NcK&Wm|@)6i7CONqm09eVG!zt)b<_kS> zr`z$(@5;(vHJ|SlyRVIegCbYvy=6A#yT%%@lQf+k`vdB`DIiTWG_;Zjb24HVr*0H} zza+1qqdGTip$DVmPzwmWsi@!y06hn`e(E#pu`7V4AOM0LdlkWDZ$jQxsaE8bw>FHDeeg!<&iGl2SKYTbhGb14>iCpiwVFp;cstXeGa8ZSMQ`763P-rKLH%HVt-tMcJDUA>VL@goKn>ej;4#PwS6m(p(-cAcD%t z0^BeQ5G^7#jv5E10JG&X{eTv$fjDc#h9SSi#Kyv9>~c&T9LwX~6~DvTr+_-}Nl3ci zaGEC;-Ua0a5w8pk3=NHq$gn9oCMHY}z=25$cx{q_C@ml?Jon>=6f76sv;aYiWMO5c zp{6DQie{BlQr|~7i*I!v%wuC?-yHa0#cXVBNH+)wO5K)JJbzAw162h;oT4(C&y^MX zwMR=v27PmL6X@mz?UA8@K`+RmpCI|UczPnzL%^vwKryk;$%1X>k)j_V3wuMr)UFlP zyF7S+ND1Rd4WR2bY<;{5Z$rnW_-;l5WN!wfIZHsG;0`FKvB$D2?DX?b|G?jIa9Hpx+T>*N*|((&?E4n%5T-Me=WRA^NhnJ1o7m#n)(RieKRCLbsIWL63V z>j{9M7zWjBNW`P=EMRG%J75l{u=Y&BJyGVqr`iLr^Dt1JRASWPjxs{(lhU$Z;MH~>q zy@}WiOu)@R*jK8jV$mxL>FScB06Eilf4v(Rzml>t4v=f0>#w4t-+EXsPc;eyf1nW( zB9$lzPZjeQD!1y(c>n(8WWCoXqVm*u{mcNTjS+JLGg@HtHW(G9;*Y>s?=|}Fp-^#fM4g`c33;rB6cjKcDhwz@rfpBQT2OJn6d4MO9nHri z@ue{{Gc&QW((&^X0b&OS9jkVx1YC}80#Z2IrAwSZ?hs`Y#FUR|7pK-NgfFThK-5SD z%H;|~4mJKb6V>5+4So>faMUwpN=;fH6CNzUOu%2cphaZW`v#meTjwfdS|BB;ymzFe zI1-e`Yo|v?{QT z86W|t#yuSb0)ftM>!k#Z7VIuSv z4!a@7#lEDcV-AZ@tF^SXx5n*@IX%~PDITtKQUn~Dih&3ZvG`0QU)vI?WpFSC=y&Yi z+Gq^4RP^;pPY!-AfxZK^?h#O3sEtQ^#ese8&#oUeUz~`G9nPQvw!69UQ1NIM@{^4X z<5GVbMoWLcYJDm4m$kk2_I5lxy!5!xH*emcOIl1S&wvzHQRcb+t(4iw80-UHlLZO% zC7IwW@v{}xm&BYX7#J8(bv-7F*uPdxVnI~Bq!e!&JD{PamQzuo7ZFKDL?(!5leP=< z^EM3mLckIAm9@{*r$M%396lUa0tWpK@NeP$YT#f{Sx}+lW6xtIA}n05%>aU3Prh~m zv3P)ACh4mrc`dCQ5UN&NKRV*`M{&>*$sH9}B>hqXd*kl4;^y423+$Ic2v=lwHacV20^v6 z)W5VhYPw7-^4q!#J<_W!5X9cIp+vv7wr+t=+Gx~|PlOP z(8_#qAoN3byJ#UgGm{2(G2G(}i2!ofhwg6qdKn7~3((|(fakxk>@h1vnB2wX%i|>I zFO@*n0*KL?#^P*lW>&G|Xoz(F%{YBSy%E%=|jn29OnFyT?rzszsl>K7UfJuCHsZk}zK6c3?PPUIXDNV%Z zmGSv@{P>b=1R1DxDg{LyQaikVy9>ZhK|ui^1Bt_`msmtZ1ggns&)Hs0lN^-~IT{8= zITUYKSJxWvtqdLIO$aX~rI$MQ)$V;sNlq@Zo6qU9%Dh)>w7W9+6nGD4N*_{19}@FB z83Zpt=UksROA-J-pcekKT@1*%2t0<6Y7t&HTyU=(Fql*A0wHVE!_~YTVlh7f&-xTl z_hpbxHP4hF&pz<*aKwup^zD1c}D{QWDF09RWFK}^mpEMys?AqbIGe`?{d=P2(z zBPU4pj9K10ef-^heTdqDUbDJa@$TI_G*#7p8Gg3CPb$Smjk;wPnE3ekwDk0RHAu0s zv1}wfqvycb6_BJEda32hx1P%QaOu$#bqeWkYn`9EaZcCfwc^> z#d=I9d}&KnJltFh*sIno zJ_q{85Fw-~nyUvp7feIW`o$+F&^Nku`}Xt1MAG*<%n(xJUZS7`+;1wXs)TkE>+46K zA_cj)UP%U{BN#70hXf&y{E?JgNO!P>60;60P_CJnncMpM3cIbQf5uSWGpn9Rg5KG^ z5q&p*+irv>40x89We27 z;sG};t#m1+hak7qNqnQjtwZaSg|u=n1e_La}h;sd}&P|&6OQ$_Wf14JQl zAc`Akl=jN0@oUhW0EK{-kB<KuT!9A~r+_Z`^ptd&kPc!Ub9-5E5?y zv;g3;C_twl85V(#_Di6?9}n)uR!^Iao$K*ovZutuC1ND{mo&Gs{P}y zuht&;N0S01e*fN~EKn10DRAIs&n-D6rFW28$4@|yK{zc`1#nu*d-eq^8jdxy^t6n9IW0TO40I&u~2_;tJjS{_)_v|I; zjeS{hXEAO{o(6eeDNPJWYiEPc4l$>hbioMpL%g8**@oz>L7Vdv@DLfug)yJ#X=%YT zGs4$_*_rgd;f#%sx7QRxbbElLJ-$jV6qS(hthqTbGv>U+w9OkzX|3Ps1hkxVYhCH! zPKtn_V03)Etf}cOAO~?KWthM|en2SCR*o7$?`#UNOC%I-Mf(U}$Yj7>9*xLuzI{sZ z1ITTs1=kj$CIK2WDlkmuG)D)4-MV}NWCK3n+NX>B%>#BvMOLB+k_Jd#f4UYt#om7b zm^PvszTvUGM(Otp8FY?6?kM#E8X|q41I~wNa^kRsxa2i&K-a1bx>lG#Lmc?rfW9EG zdqYEmQ(XfNF76Uo1OsUQ^AU`V2;t2yi57@M2YC04A+^P-9RK?DHjtIZ^CetoS{{k) z^l~Fu8iH{)9R7I0S~ZSn4k0c>?5+-DLrI1<*v)xG==mIhKn2N&hK}yiiw-F`M$kC8W z&WMiI*0xVSV5N#78W)G5MMv=2Z)vfAVI9T`VZtSelU4pXwOrSpAXcz zDPLbAsqYEYf0wW73cUGJ7n}}bWub5-=_Z$dpA|RUT7k~7jX(JsGaK7S8y=&<-1a)s z4{Mym8bHZ_vVsD_v&ue93In07c#W9YdpL75kOlNvekH-uF$Vx`GaDO|7PX8lEbZOh zdEGgha6!tndZPJ2Zf>oTqJB~ZE>uD6g(ueC&n!C1hf*UhU%tP`M&#kM_T$Ib`GYzq zmyF2Be(mZ8@W71GwfiY5K$PG%U7_*n!csN>3B*OKb-{N|GinkN5}E#mK$4;10koPP z^#VG?pspdh8rg0`pm$aJH>dJvjdC}yZ69rCpVyI2CMG7**OU0Aak=8}@~~=Bh12bPd}3vbss-llrpzB!`oM z8Uk~I{|xLJm>N<3A+6fRI0N;s_C=WjX$ZYv0@1X9wq+B&JuM{Z-zygE1qBYWtL(!f zo)%!)f&r%jz$ZYb<@au~S7ZweiT~Z8sF6qQ9?69pGP}9y(D#M=4{8df4-cFG93=5M zB2YABM5s)NtBQ7&aJZ0Luka;>!=(v;9dMD28yIbyUF9nv3ckKVKqj0f>ugnDGO@EW z+`9D$P6m`y(EPkIF>(>TRjDw_DPG*Fm5FM0AZgaHB*bm77ewqoHaAs3wGc{)0Imrt z8gSc>K;I4zy;%scAtWttE+b1zi*9(QI7GB%AsRmAjH2{si~iVnukS3cJ}p!1L2ul zTYCYCLMY`b2slWFhDpCjf{YxD66MO0@@A{5fQ8qU@$P#=)}Yx5Xm06x_*G3 z0<0aBVNmbetjZzTNPJiH*_Hee^{bihoY^n&pVN$QG@>YPdtw=96yR8K(5 zvSnf->D@b8*2|Mk{s^gzG3yYjKjMxeoczp;3EWYnCHj4%Hvk34jy6sMqTh@wf%Np} z;^N569q<)U(8>US=oIRQs^kC~!6zl{sd+Gm1f--B7;KheJVM%lCZ%4zCo7;`Bp@y> z+w<~Bpi2y_xFfRr_rQxYkg1=;{@maRf>Q46%#GZ4zMC`12|5JyWua2wDKJUhxr2H2 z>g(h`_rDUWk$;YjkUfCcLDGOLkbph{WBf_hz*#g54Z}gs@ojACK3GE;1h~EK`LI0L ze3czLJ~cTr)~>?O5GOY#Ml+aUC5-Yjkl}YHK{XlB{9It2%o-Xk+#~uodyxYQb$vlr1`+{8Y+MK)tHS9jv(VEJ1*tG}73<{qozDI)5TpRE$A=sy zME%)O{coC}8J85!YOW(C*S?XmRPOMaSo*rJSn#}?QN-;m5;tK+;`@vPpIsSS(5tfB zA<%36F0Haa#=vIT7FpMqbwU(T z-qzO|9PpNg_=~LoxVq)ZMaOd2gkapmm*2OqjL@-TT)HZQp)yZls_^q6l3b5KSH$32 z-g~A@S&2XykEDnJ?2k5YtqYZ7X12B;7I|I6|CZUhH5QjbfH9pjVl_LN zQv6`LJ5G5%Ao6>}El`?9Ny~;O2U*a_RG1H;=dRiyjY?a_vQk4o{qek`oEy=r{n;B!+tTRbVysa^^AN(9D(iFN-qL}iX#IR^rtY9R1B3e@;~;nzD3=7 zfHO1l`TFwAXo7;`rGyS^WPxap*x_fCTv?+I6is`2cJFyv#_EYfGwMDnt>+cj=%%(M zBk!!-^ke?H?*A;G)UA#EnM!|6(I5vY*_(h*r~*j_hxA9xpAAI1QBeawiTVfjMfdu* zr`Y7%8b>GBr+tetc9R|Q-^E((oOoz#;jGW%)gjXIC1UP~>fB?!MnH}=4{ER zhZy^*W7&lV7W`=f>-yZpoT9RtWPHbt7Y&Zbl^VoLdl>G4oy&*o zeOcO-MC9DCF7&dqb*|X^Gv9F>zSlrr{;b8uo+k5&bUxdA_oK3l{-KeaWMjezPle#m zFw@s9x+YvYaj0)@CFd{(Izxo|KBcx=DFJ5GTKydGEZ^20N}IW}5z0utF0 zQ|AxEb>!p7=D6*?G9Bfrg+v70aW#h@KL?{{&6?*lHT+)4uQe6jD=6LCx# z%Zsao$l0vdEV|%q6H6(I>6lwigdcJcgCo1wv zD&8KVD@2p9nYAO?j_7Ee+!ag^J+d-Gqn|Dg9rYeAXUrvBK|w3i&Advv<4Jc-qXW<5 z7v-d(;R}%Fh8G%c2qF{|O~!-2Uov2M#1czNpjvy~{&KNv+ujItID4Z=Pj5lt6#nh^ zPc08Lt0voB9LT|Hmt^(#t>M+_LP9zppR+^qx{CuQdYYG=krGKYU6`N1SiG^Cd2jV6 z@yc*XkW0h!nP>nmVrmFXB$kz%V6F4)5?ugFV+Gv1vVnJ@gKl?TJrpe45ooAnJ$2*? zc6O!<4jz>Q<7R7{#rIHM+s>)?QSuJ2WavcsQkq!qIKPbVIC2rC0wdU)lFGUYn8pf= zp>7xfYb)>#Ny7~ELNYYjXu&N6R(+3ZBqb~L=>9QrkitnB;ptxBmf!7{mPmzhhQ zQwQ?DH7yE%Hq`9qpisd&VqkzVI)(SMCUc3y{KXLS7qVM(5)otj^Vtg|zH;AQ9tQTtE1lA43nJr3}vZqqvk zRDI5#pYgzv&52-bPGt8jkC?vW*quZE^VXGycZ@^7Tp7;xXkI(q9qE%NkJbXAuuaCK zvQWf?KbU4TKSM0%bz(vd)S8)zArM`1rfzYG!e5>t_o=-olGg10BZJF~@SF$kpt-$@ zV(M|yx@IzVEJN~x%W!-O)!~`XH`D_p&4QJ1lox#^f8R{Ul4awO;HsRCF19WzZj7z( zJ$Dv9-x-g8_Qv8(HVLP$z+?mV6~@EEU+p^I>WpRi*Q#nEwA{o!7-UHh{KCP%h9>W? zwcYLn7%!km%@_(FD7zmqrdeEFbKR{6;!wcW-q-*a9E@po4g;0zO{#NB}(FwJagzvID9FHdZ> z^vW6aIB5PvOvDNyy1A)P3k!!6)MjpY4XMjp9`LXf1Du^?|!q{JGXEbSXsK zTIYmtnNs>HZC`$VV~#+4w>!IqQq`k#p)7n-1DVHbPNn+4iKMm^f{=oaUy9ERzS!asK)tFIt6{^Tp7{4C|{((ONb$uHar>C!$n(F&5HE++l;?iYT za?|CTPM#MD3)h`(qwtU&Qj5yPq{$p_F)`eo;VN3aDY-|gqKZQ6X5mZuH6obnx8}Wgj8xo|h4RmHl zFGVj24!LoFC=t0IWeEewCIB~0Om*w+mNSu9L#9e?W>*}RqTN{% z)$V=Vv`&xI$1@rxrHYGd`dZTCCI7XQS&TB8)>aA}*8Q+$`=+`Z)gzlYH70ZNZr)NY zVj<`@Z&YO(lbxW6&cEV53(s<4b1Y(k6235o^g@Hgd z8`GNBq>nbg`_}K8Wzj^uI=tQyla@3%SI)3=5Zd2;qOyqe8vL8bJ&Sy`cVX1p&HnC% z6xRz4!s+!?zK~jzWReQBJt;az#Exq37pVboJYEA4T$Ame(9+U?2v}N1A&r#DlUd%T zo1_d)ZL{ryxy)5mRG0WLRZ^_oQdRJ60|gqTV&``nXcB@#HrR7)qgSn_=Dn;#^logJ z=?9#N%W-`Y2UP$i)P$_ZNAP+w|Q6CT8fY*o|yMInaI2YKaZe&lVgTsn-&OKCHG zp#jjctuq1%CP|dz9p6!1eV1K={=)uO#mssgAsdEqDL)Ik!&^UHezUy9F)pZU<@2xY_U{zF}*GN-iNkwI|WogYC+t49<531K7oH3yP-BLx)V##0QMb5tf3`^y@NsuDZ+@1pveO-3iF%am@T zl;UK>l9|!9pC9jk`e+2XXccXK=wznjv|_iFR8NDRH*W0r%UHW1rZF!yt3EnR@wiy$ z*TaWZCv8o>-%nm>MICcU#JzRutYD{pl zxmXm>h2BTnZb+jab~$mwd`zN&l>P+LjSrG$X4%~a4J<}m^} zcRt&_)z>j=nSw$jBWuH2FW4D(r^YoY%;;m-(uM_^Sg*Yfstb}N4qhTX_4PyF z|0xi0k~VA08cB24AmUc~&{yuGy%b12az5|KvD_D|e4f1E-gQowD%iU^y_H|C4%R21 zTt8gqY~@%PThAZ;w%+Hvd@mdu?;qAwVToaMkfrdUQ;8x|&ZhHj>Ds2$czCYmAh;5G zhOyrdnNS{BWGkQbc)C0u(04x;hF8wK;{EXp1APvz*cufK{`t}bn7Or3UVg0`g|9&o zDP=qIDa<*IH%ou-{sq0 z*3VqVex-T+@-rot@XY5gRsQPpFkzC}Revd}&G$-_o_8^#mK5jVcQyBx#7WPfz*l_2 z=@ogV*6V$FaM^>-+4)sTLT&Su&n;~pc&P>xFX!u_iEdlG^h2Ed*2u!u9j)UJQc3U@!!zSC%>Qb;A7?r(HK887Vo+)!4b;XXFg8%qly%BMcpX_JOPhZG&AylXS4h@!6&D$qxZm=p@$Zi8 z@AYS!NzwR?O{la359S2Wz`yyd!bK|xcIgjHvLLE=+2$2rpHc#YrVUCE1 z0HydN5R3*WdQG4TZ3CSGA0HnW?g@iCK0+7MKKuoh_Y+{B#~~mP0YSKUf8b7% zu1$V=W=!&}90)i79~CgIZ)V491Hst;$qlqK-BSZ%mQUe66>Yb``FTx{CP2Z&%&n=3 zYrWfe`*&(8X0lvJ7$^+jYyFt7hy$W7Mn<$xt|(w#Sq17iIJM=qwSeV)a4Gv9@tt!c zC@y>k2)Q41J!TM7Fuq}g3q>35=TCoB6JoJAY1NnA;6Us|`#5=wP-0cQ8MZHM*olEa z)4v;bZGTCH*o`Jc*OzDhdQDJx3Crx;O5p;i3jWnPlfsz zcQtlH&?P=(f2p*4e6c%+S*f?g7`Nf|*+2s~#3K(22aQ=Tacn&^|5&GI2d<*xaI)I#8r59e3n`!x8q$I{vox zjx`gM1Pxh7OLYXby|0acv?2{m_aHj30yr9-8}_hAz=;OT5~!=I4UuA8q!@9`T2C?$ zH&6mVl508DWpM>q60<=-;K`~9RQ6Lq1AwyyQALnCAaA+9(6DZ~Hs0OaOXPE71;MJpRN~|uu~(~ygjn7|8Da> ze^aawSp|ylL_NG2bs4vnWvQm9^!UpX$@&PGbjp@KHUAmoRlk);+s7l(JgZ`3hhrX? zUG>PLof1ysNelMMo~CbI*7{v(BOc`F4voFM6=Xejw-6Oh6j%@70s4_poCp zKd=-{##hjT?cPsSm5|8Dl-(tjvDJU|s;!EN#6jHd@|3<~qg`G-)J}yX=Z;S^2g1LQ zDl>R{p~tHj$l^hN5#(Nkj}MN%Bjr$l-Fm?xB`iE0$+29c&O(T<$GnI+Jp77nZsmnk zql?~b%-X`~t>YYeEy;i%TtbD5K4Wi>Q8}qfUGBr=iM?%O87bek__&;lg)nzblKJ56 zr2!*jyQ1RP0Yf}8$OlTUa%#8mrvM1Z1<^T438Rs40Ex~RAPmxsR)vLy8Db@#JpVwA z2k?uW?CiiNGl$Oo?vo{8cXt=Wg#kJy^6pNiIXgTY?J2(tTtj?#QT89CK)Vx#tK#5 zJ~`w;7RIIZmJIm$HZgs!;D8DT3@a#MI{I9i&Miz2Daovdl%1UZwnFT!M6UFO7jKSH z8|jd8V`AC;s}epgEG`Fqj?Af8T;n<{So}R<$N9zUZ>Drjv-ulwGS~^3_<&M?lCAYwmU$r&9m?vV)xVx;Jw9xYA+4HQ^r%ndW9Np1by(Hvfe|5o zBDBQkg>_@kHQ2d`$mQVEI1_eyo6wh_ps^MM-X4p91bh20B40B}*ol_iUM%+a6xYHWc0D6~l?Z_aw}!llUC zzWMEJr*^{WDa+=*2pM4*BNdKHk8()d{cYRI2bV5N#~rwG&c6n{nhvuE#`E=X!n%|V zZ9;$O&bxn9lGIikbmeM7a$ImO3M6K0t%UU6Wk|~$#}z|Dgo()^bS&6b&_z>^OOYJh zN}gwa8BF{#XB1&pU!3;ElarD{LAO<%R)^priX>nfwH3?_ZjiV*f)pA0Deb)(gPM$t z-@Fz1Ul^tunLC^OH^wP zn?{`K!xXntrkv@u`&27~^>i2sVN1b>cCXCltq#aI!}C7~Zl87M_O48Oo?+CwdvCKD zh_JC3NMLsS&=N%4<{db{M9FG%C2AaZo}81`b}g-BrAb87nuW1>oyNn0Jziq@E#yFo zIzBTrLU;u_s-O@Q=pj1nXlB;SbAwmk=F7;4D(b}_iZ!CFySv!edrmIRQ{O6h67?lz zXsGvIRsbDpX@15fYi-Nn;Xn62Bt*5p|IhgW5-WF7)*_`i!?R~!goR-#ox)vtAmm+D zF0!?r=N-Y+XN(eD4~E$CyDIaPyFn(Kgapr|f$uP8pYTfegd$NQhiC?Bzx z&EAR^i^PBT%igD)RUBcjq)}OR<{34?5Z+C=QGtgiHzB-MvzcSSLS{A)l|PP=5%TuG zN~o*j>V}XFfDrQ25Cj_c+1?bUuXeNh@h~scm8Woxrzd^0nCl}FJ}?4+@J)VUA@Ghr ziyshnbL0N_@grCv(TMAVAQj)^-6`mJfB^wGY+$|yxqI^gtGuX$1S(w&O5mrDAX`&* zMH>`3i)lMz znVd--JCnu47MD$P2m0>LW#0*$JJV^gAW&4lB|)9~GOD>hG^Gzs`NZzL?Q?w#@8Gft zwdLY}tFInAe7j&<&zq}0bWy|XR7IXkY+O~fQi|RJ*zy=OfxnV*H=Lbyu=BTHK8zVv zQ;j>JwtKt;egpf)X~hc2 zOSw#$ftfJ|r!$m#fBe8Oab)pNnSZgj(%UQiF~uR2QP;j^%F0jLq~E zu9KMUAbXPW?g)mpc%`(|_FRnhp|-6Izu;CwFuu|E(&J@o25MVnG?n1_7IfQ7L=rf@ zvQgM^nNH=Hw%e@$lkj)ma*EP$tF+tu81SV43@Aj@On- zT`$OQBd9sfed3I>?)OowPL7_&@tT*T|8nUd)u{LW4m1jxJ{ft=W>E5;m?+} zw)Q21oHvSCbV|_`izTB*N4eV$vez?*77wEOtlzR^odHvP?yK?T;fbDQr}&;1yCKJW z(#C_;TEm5SjA=Uj&*!6-)BFE2`MC7Wd?Cm3%~I5#t%s`}2pn8m;=SLknPZ8^Gbk)T7c{)MplDNIoz{{B2uLv=F9CY|MmQ63dF%i&@m6(tsU zqF`Dz3ljB0L;5`=Q`D}e#(y9%^O(Ut0M^Np6pTv^E;iwFHB^}BrzxeSLio4=U?8$^ zBaW625ukwwr%+w-47?E1EkZgZy=ZoYtH*0kBq{`Vv1=|xMjbM{*e6Cdel}YLn_%xu zjfwUwkkmv0mo*#5YSvewCOJz!GZfNRXMhwMg_Uw(C1%e(+mfb6ZDPSRSs+1LU7c`Z z&p)E>C`CxGhEE=3H^r99-Tx7L#(q3NtApBOH&~UA$iN+I6my8`h7ozRuy{<9nj4KnLso|!x zf9FdiM3vZFnl&^Q`q5)|lqq+>ugkhybioPFx~*Z0Xw>7GSLPVYOgR0-hej+e4KndH z$N@Rhh6%_m+a-qgdU^e%N5PDLZlXbAuj2(ax?D_j~;7Ef&NFiwP`Q$0Q3jCrV zM`Apja;-BHqww>K<9HUI)mydbrsHUTNs83nJ5XkhbuE;NPLIPyA-5_|=lQPHg2cLk z0R5cS3}*_L3s>6}o+Tf!zfWaNlZ|uT$Nt)gbse!ot;JrF9*u&1{+1XNFjJ$Z+C;(qb*eSFy>8M zK_=k;ngL$Y2*2Rl(PMrG-K;bv7V>Z=wHp}JLkRGYy+64RE<41jD39eywlx1OFJJwM zeLx2WA9=%HDDcnxK7g0Qn*^MJ>`Q|%8?uaW0+s_IGQ1$1Rd9FN2g zLOip+Ik*v!|2Yt;_`iA29#_Bf{FrGR`=(px4Fbt({jocQa9n|ASXSxQPG!Ostz?C={X#=ARJs5CmhF)K3&o%hYMjD+8KHRecY?IOgciE|JE-9`$~VE7Mp8>8pg56dU81YfWlZI1aJ}-| z9M7J1?RH*7;`1Z(<(7S;YVK!Ox{9{jHp+A;bcRx&7xE> z>kB1bm%;U#Q(MZDc;0>;Mq5EGE*W1KR1+VGMKqqbZVLwf?S-|RZbeNUiyzch@hE+C zozn-wv;&CWj@rJaoQ8eL`&IL&r&%UTO2fw|1h|xhyXb-m_@7XLne%QROvok19 zRMoh%*`38;vzmS#)T!B_k(}OR$>wzMnU;9%X5Rl($?7CiPNveXYRsh##@_=2_esmc z7bhh41vObl|bIXoWX3Xl#YyXG>htQs@4q-3Owqc8PI%_{rLym4!OC)ck?ROM%?B%n21%%nX$ zbf1e&k@DG>IU$*q&Y_GYeK*G*224xA!Vviwou0|;sSGBf;8p8^c7`JIiK>&6G=8qn zr7PV*p_}aMl?aygw@pGgsNqBlExl$GTgl^_&o@1+ukC1*gA=jyr?7WP#6>&_2!ca6 zB%e2T+~_)~=9wP7#_KPfAIj5i-R9_bLkpB@L*J>z*88TXyN_il^L*-}IRtA7dF)qd zMo#tq534_dbOBluB=4MFtIx_`@T*+B2%9@FHX7A0k!=j5^kQhc`BJj?_nmgN4guyrjfKwGk{*GOFCb`(9ew74P!JGtfeyj}rAb@pA|tl%d${ zN#<@=9SXfhs3qYfJ#`N;f9^Z=_^{twZCvfaHK!}tzi$)3u1Zk<17e+K&%V2GnMc$7 zlsC1l*Q6h+?3?x-I5?3Zf%~t8*YN~VgI1=>t$V+UDNNJ3O23k?Nmrw0j;`YB(7MtA z9o@UM2%~{S{u|-hVk^Ez`ykHJR{`YhDtlqtR!2OE67{G$)v)3xo#FjP_BJGGMd-ia zaKxUIbU!3LTm9rNH>ubOhaLIH+zgaWPr4&V9{*N=$)ip4fAx-FAQD?tZ2*_N)cOjy z^~K3M7tCZok$i)`3!i1@#)d2?O8i{c*R#HP&n_)R4pKw4L!3$clJ#!C7}-Mdha}3^ z%9WRuB%E*JME;^qh!5}+3z!T3mTs&@7mN^uIfzrH5f2i{=l^cvrS69LjjXe9FD=8x zl~M1;wEd3Ct|9eqDQ_5m4Yq+2QbqcSX9y)%q57k8>8RyvwZJ~}^<7ul`2reo(7{qq zJw)g>_vqE|TB+_EuY5*@k0%C$lkKR&)U=qlcprk6Xk}OX#k?j=lDfu>mg=+t4_L^6 z--|frvd_C26~@fX_K!6yLCIm@V`&*4y961!RrP-U%-01YL8BH)m$$~C;uR%s?;eVv>c%{O^c!MLYWF*PYC3W2kKwuI7@?DLrMXdX7K&eihZMP<3iEwEiKgQ;g;LWdbpNjYb8#I)C!8G#g*e_ z?w~&7Lj!G<->k3eQFdU%N6#ko5`4MuWjCwA7409Ec8`R4(vJky`Qub%W3E5gJZ{&x zKw4B_xT%u{Wl5bdHvkWrnOQVuS>jPd_fGcPBwpU9H>QSRe4_@dz>(rRbf4Qpxt8hb zZ`dK6@-vRR@d10|)|o|S6h05eJU(jY9t9c$^*lzFwT>#EF}DK9POoGiLYaF?CCH_} z>b#aMb&YB*y5V0U@M?REaEFckNxeb1lU5pfOe7j<{HeyPaU87_jLKdWq8)r zWrpKoYQt{p57Kb{!Eg=wYiC^N+~%I?5d+`>2aFO=Bdu1;|AYoHc5Tv;!v43eL=BaC7qd+2Ci#Em4q z-&0$mLy-y0Y)ShN@Q9#Ro6`O%u1LKv7LIMY%7d_LW5cu6h)uSMBRwcb*Db0k&L*<0Wh3JUzywVn%C0(cvF5)VE_Dx@J(RIP3u zH%KT-!b;iN*Vc_3o8rrXJ|44vT5 z?w^`;qM3gm_9-v|i!8`~*iR5gTBm(89+yMKIM_(O!%SqiO>#lF142930LPc!*gReW zlvLZQoozY);pMKpuKC^`-lbnP_gMI%n5+zki~{pFJQ%qFkuFVsqzH1bcKcjcaFUna zowdR`c4gLr--A@oUg$`ehxL{&3afdc=OoHH$FudFySC`iK8tw}^?`+U;2d5s3SG<8+xR65!yxl~gt`x+V) z@cD)QvD}_ry;jp{2dTdo)fM|K*(AZ+o()@ElKDc7M(;`!7Fu+-zwAobha}RzvRL)8 zGoCejT9XGlA`TvGEPg2TcQQpxntk*$HuCmaFo{w!S{~?X%_49q@6vZSQ91T?gbVWn zWh7EVP6B)L@ zeP>USnm<13=oA)ad6f0p4Bod4l1h_OhZ-)rU2vmHNKDtbV8Xn2avHoFIF%x03(9^@ zs9&S*cIgo5DK75DU3rP3R(D;75lv2Vd(3XN?|4s5 zK}&77zM^QlJbICql;VoCqJhhbH?e7Zi_i8AMXD|f zs#JPm@Oca!-c+cLc8z@Go6-U~M_iGA}Os-N?V}Do1PHk;=wibJ(+k zRtr_K2N=9y(g~NQbX{8FlftB5sz2GgC59nwusADfT3KT&Md*0{5IfIj%UGN97;1AO zxcuRu#rl$q>e^k=9^K$piiVYPGs`_q(8!@r9TgM0GSxw0VA(2e$y1h7X~QjPrO0Vb zV3ia}BYx-Hsi3)J!wR)|FJkp#=31YrW#IdV zbgUe-WbxKKzxcc6ek0VoYCnbzMreVpZ~3bju`uG#pFiNSd_0yKND}^L126DG=hrg> z?s@GUX_9r^;fYrUyzC!D$4pDQ3^`XFxy$Q|{?<;e7P7oMC|F{x7`bBJxXki$5BD!< zMhkt>_Ip|iZ5AeoPFqO-i%)35Nwb;AdE$q!FO#y$TC%>PWz9_gJs`h#`Y0A14x{zX zJn-U2Qch3hPe<;x+oez7ub2BZ*OfyTQmIu;@*~{y%EM1Ksk(EeKb0O+GuIKW#XxoU z{LY`g5&HC4tcA*Dd1~eghg?h_K|%fYj^=c)Ds>1uJ8684Li#&a8oc;{uAkJRz03@{ zVvp=lZt-X_S?MnGN|x9BsXZoxx|^pX3ffvjXW}ugrn~I=R8$GKM-*;53ofp!=Tl;m z68abXt@^9gQ_h73>DtX-Uh(FB99NJxHG?+%?$)m?Z!C)vz@>BKe%R}asWXhptX^5gH~}T6 z%g0lx#T@2g`NV}C?J)z5-HUYaIjA1bJ)VOCkK4=m0a@PS3G?%ZrN6WOB;SzHX$4qu z!iHvPt&F76SrgF;hr06yf6nt<@JKK+s-CVz&fl)%dOj{vt=kiq-e22k-?Yx){fJ{d zFBc6#Mt{lkx=B*|Tv}^MmC4+kC}H;ec~R6r{YsL>)lsQKQ_l+x^*?zN?Y;g3IO3Ds zAr})Rm~wsWgLOA{&%8b{>1SbKED&Mdp^(u0!c)iZchr_WatNWwl%;+?rjZ=05Y%s+}^a^5XOnj^LpV(~}+L zeBL3Xr~lD&wLA!Fn=~R1hus`MSRU;m<<=1Y`Vpy`t%8zo#;wWg#*Q)lr~eA zVpf`tp!tZ(zCK0xZA+(@EPtQQq9-o62mdD97=LN?*2)=&EdkpuM8>~0xk%wAH8Wiv zxGu#8<@>(*Yhz+^(m_s}rZ(`tkaTTXZ-Cz&OzF$}nfP=`(~uvD45L$mTk2xnYCXpe z?m8bX%S>-Iz4_`;!#X<8^Igg^-QP%e2gPhAlXHIkHOtRemmn~?DL!j-f zEz(Zu#Po&qIbZYY$1_GaoH3O5(mmM=?X5Mh*LU#QqF#=2dSZ1?8vC;KZ{<=ew$|T> zFD_l6GChy~V_32k+KU}7)+{rvF@2lmIR1Sf>h-(4xgT!Hqu*xC zY1u)d!Y+4QT+4vk4-w9MqHn|UMN$&-(JAkaV-rap@2qd>FjA_r$H&^8K2Qn4O02L_lYfW?zFg%kq`q{D&t;0eM0KTt#qz-?*CZseHlU41K0jpXf zP!^bs%$j(s z-#fnBzqx3{yVF9+e!R!4qN$wYfPY!P?lSgm$m%zj4?1N z;&$rGl6M07t#bKmDD{iEBr!DU9XW&X!>ZFribs*9UNmUr-0t05yZU+fJ)vvk5&c09 zY9-eQj`u-*9z8A& zPPb{A0q5cg1p34Y{VXc_gc`lrKi)p8uBs{n-`Jor8>py(81o4rb61*;)2XYgBctpv zd#cIFwE@IkAJ}lB8{A?~_!Y2u57HCa5x_f4z&;RCsXVcpo5sLd@C2j;J85tM<_Zl! zK|K-601OWkNH+kesN-}0-pwtIpABr}@&rl;H#_v@VNidK4BKTVjblogoL58T2Yz6GOH~RPxdmp7TGD438SZaA zFl{!z1Q&_OIWd2nMYfb7nPZxg8+ZJ+CvQ#toBo@PeH>WNxawX}&kNpRn`;!#Xzq`` zD7N5l&uv^ZR4p9^%T_9a#t?iD0ciOlm^?I5&)JdILS3C45JW2JOKK~QVRWF^zI(Ti z(Myq@aRKPGmh+dz?;3z}$Hvi)CRa8cqRC9p!tz}ZY#pGLGneMNiUOQ|Jpc_1Yiezs zQ&12Ja`Nde2V6mb#tH0P0Mfe*#FouI`tk6T0n>=pbj#Oo-K?w{U%8iJTUx!teI-BEUhm)Rz!OBe^5TyDJMZ705j!#3W%ovaLJ>}3 z``mjL=8he<6Om4C&bv4HvRXVw98J1SbYq~dO1wz04zI`THR*N;iWiiMk&-~r3TEwQ zY4B#u=IaW=vo^Q2D*Btq2y$`<<^^j`fQmuj$<2fX=0^bHpdWmK!Cc+ASN(kP;>FWO z4ozDSmsJRQ*xtE2jE!ebo9+=$vPkCWsgSMaYY}r02-nac0s9^Sm7T?8nDl9zgC`6t z8z7K^xP23Kq=~$X-v?W}QA5k$8_vLzpU*;=h1s?HZru8Kp9b%c#G`%hR@k^~=eG+@ zU~a~bLSiD`A5L9N+hpHE7tCmRC?O3s)MC+}eM=k|Wi$VroR|2>0d#c~# zNHAHh9;is2e1or@Iv#}}kXoN}6(q7`CMK|Cdt`f4$q{BiUr#O3MFBt z3?A`CD{{G*Bf4>IYys(q%_uat!@}B{?ub4N6S9?HfSi_p2G}}1x7Sx!odz3Z$=cBT zI|C0YPO{v-sp)OCmeRvNvm^jo2HJG%{ejIB!|I7bU9`sx^g3qGzuvyd&KAj>y)6r4 zp)`Ge82FEi>7S=S@skDxYlpJed%u)?Yf7qH{wz_mZ=@qFpjN(?K}|0H=>&0vS4(EI z)W`ogzm{z$^wm|K*UXo?pwLZyn-+q`uG`jfA&TK8`h-R{pWu$2#O}!g$Hj+{jl&;? zY;%pMQyP)uKiJe~kERfx(*q4Jh0~CqI~ec@0h9Os$L#lzkdUnG>~i3S1mEt{W(EL` zU^G#nM1P@)AIb~?j1cN(pYJ^fV)i_MC5b~qGVlau1r2ScOb_m4x036~8 zE%%#nLoEIjfl$z~S4TbMjtmm2@he`5YC^=9RXj z$hxhfJ^qTf+-IatTrw=#C|L$jEN`Cu;HLEoMk!+B2l+vR@Mg{!w2arPZh^Tb&f3s) zkVwxJ+}KR9^;Cq2Qe&i74%AZOBPeDwp4=RUYPIy#FU zP=0Oq9oi?@JheDZ44w2Upf8<3xSj#{b09#r95*iAV_5Yt&OJIUfYx-qa`E!=xbMQn z)%Y4M#hSkP*$oS=MYoxbkMN+aeWWEV$29d(GWPovp<<*EOqtz!ow5JE+oAmgI+)Oh z#H-V0Qkq88x@g$#xL~i4{pI*>S8X{6{!uYU`GLyeNQqt~nrjUD7BQ`gY2 ztJl1`eYBy`2XhTM#@NNH0k#z%t;;Y!Njb2%I((XmNpny$*Wxzc+?mcM9nhsPi`JgB zOkcyY1bt@p&=F70#t*pod($Kn4;Qu&9@${=Sfjh(5Wdat*CMx*VA&mGzJCAqn!CZ@ zKMWJph{DJN0*2{ij(py5Jviu-1gbWCu-(a2xK5cmk)b_gidoOy`0Ow0ahNM(7!T3R zY0^y<1LsZ56a6GVUqSy@y<9+%y#UDFkSy?@CPr2dnt+L$5p4txIwKbHLvHV9-2W)m z!-zYe-8qFBW2Ji#A~1hm7CcmPH63m-oBbI~k83PyG;{wg>2*_Gxu zrKWgH{fUc>z<(s8f9c=!|L{r2pz5k931J9PE0U-5;`W1 z4w1@*`>n1N;x@$`H87f$g&Y9d?P(~{llUKBK_Wij(}F~U#yRh6{fBaPs=eGXGKXTFk%AJF3j+z@vP4k ztdl0Gw?WTp#mu|I{)-<=e|!P)_vuwO>taP48|~}=xxTi{wtqR7i%NS;{!kjec+($+ z#lEwndI3Gn8O_4{OqT9T^$rhZl%kiC`K3gBTTcWU)ckd$<9 z(#FQ}W%kk?iM6Y@ReKGR3v%!X*zep}3wn_?jd3S`QJo0|QI79?frrl+s(U7>opvej zB!OCxXS)6XYwAwFR#XVCr8CyKFDyexd(`#K3Y+1#eRXQ@Ss%^kA&dFPXUlezgE9ar6XIVx75wfnrhWQGi3eS*LS7Kf~=y! zD~2o1dTRbbN{{0?Z%(m^Sw6KMaE2JJnutn>yP>dKMTHo?%_q&O~(7~a3O%B z3zwc4jDuqKvhn*hb8Sv{{TBH>uQwhZ>WXUC4u|N%!KgOO^xu@|R2B7oqLhl}HWfj>lN`F?^w&0?-05IFcg z()~n>{4iRsD|)yUOvQlg;N3E{VmVjmcVRUrqt%+AS_Hho#RMY`H9n8DMuMDMDwwCX z11}*pQ!a5!KYPsnC8_y0|65P{cij_tIOxBrrQrtgBZ*1ix2*N(EjEYcj0k2QXGTUL zz-LHG@)qxHczbX6g#UCpXH06j^WQ9O`ONG3u3$TXe0*+i&+PVMj(p@AjoiPoB`p(d zBQ(C1zG7pY;(hjZ-kDcGC^$8UnmB-mJF#0nfgWQ39K=A_J- zDB_tHGJ=E?t95mr-QX>8*FeetAzu{|f$WlbiIO7Z_? zz#=3ghduII^LOFnO;kg7<{2ccLv(NSP@~)q&L`!Pli;mRP@g3ow*YyyMA!El_s!i+27moB<@zJ|kt3c&G<+TWF(wX6%HPX99S&R3sp+y3pPs>bdry;L zJiRSAN2W_OH}h~?j)3|4Yc64vj11Vrq`Vyd`c|iGMBG4f0O2-8OoBFA)4N86I$u$& zB1U$V3qmez{f_dIE#((Ee`|*%s&IT4d#)C5{oPkLZH5tH*K~p0)RzCR3Y8m2E!lK$ z^nUHM;tkoGZURuj1De=f-6Jp1D5_MG)YPt6l!lPr%}ISFrn=TW^+fFPNV(a~L2a2o z7hrlG_hr;JN=)drfH^;NZJ3L9f>4<(e7bRK$L#7x9jUc`fXB;wn&Is%vD!w321`6HuROQv6p~e3$QyF+r0JMKb`fGXIix$U&H~%yQ zk(dyF2$6VZUnd!+pp>Q}-s$6+iFfa?aW4S0oXc#cnxtoDWPP>rxPH#mcBITU_(cGO!L;Z()04E|_p+c4^jHQHR%}#dNqY|=YWJ&gY$&!7E zLUvKI)ZiCc#+F@{?E5as5+=sJ+-Lfod+xdC-231CwTj8gn9jc6gX9=TR1SV4$YhZ(cFqEgKmnH0n*9cAh|BuU5 z$0r2Z({8~c&P)OUSjwo12tu0MmDiRGSO2Y8^*pwl8N|gpE3WEyGD5h~TkFn;2WOrR z(ba2A#r^&`T^FB9s<|+<^$4qROv;=$Is6-;jC>TUhBmXy42Msz|8p0YRLj6qz6a{F zvr>m%yB1NuMZ+~nhg`OKx!POJ1xvo{P7jo^pvHNVJvoh+3|R7*Q{;X=}aoC(!zy*8Yh_BKZw3U5rS1Pv2C_8?y%&icEt1&&6Md%f+3#1-gcypvtv^ zLO?!L*R<%=U_YK%b?%GfFwK(<3)m&@%n*rQ?Kk3PqlPi_|EyvK;>@PzE%Z3!=mf*U zo^zWA&Lt-bM?y1{k5H|`=@zGon!Z$#Hm*l%d|V<)3Hw8a zKEfoq#<+({+n1)_`$X$PKT*B1WqlUaFDG=C4S!I!(v2G;=YvF^zYQOL$uN+aUEuR9 zMaP$u+ANIo>PP;otVGr#BCZ%^e`D%+B)cqql;K-TW2}??noRWW4DyuA*NN8x$wAS3 zcSRH2F>be)oLYA3UckR+PUP)qF|DZ|sJ8$|WS(@Qua_?eI$nfQmTwK*SMqeGneXR( zJG@InKM{#-cQ3}(d*OFfU)9M*@~J!I(+rm!u{^KKyeu#~JM~@KkXKpUV8*LY$@3(Z zlB{{b$?;bk%|8_641IOZav@07cOP=i%SIUzGrH#iblluqyjp}t?Y~o%6mn%0prPsX z-Hol@T9c5(?%TeD&!-0&j|4y)zzmjX6`AC{R$E`(dVRrg48vDkGGYgZ<=yvSGUJ#N zuRo9N8HLpt3>`*i3vsyPBE7xh+9$%5%3u1-t&w*wcVUBW$yI5FDty{#N~@aWi*L}a zWW}AOv#Qg?l)WIFeK7IbkL#@;%?JI^OXWTcc;6$+ zj7s_9bchR>`hKl4#WeGb;T>Lu%ZuX`6MQkH`sO{Z2+8BBR|`2h1=xOKwxl0Zej4w4 zW}GUY2nbua-uH0YBQjo2pnh`=svf+|s$VTdQXEMf9SjNw5B&9PDeSMX3BBHJQ@Ji; zn^c-0EZp|^=0_2xoSUIeD2>cGhw^1{CZReCjc=I!89c zp?QxPQAS5%0n)6m2k17of6~`1T5{bVLAj5$hh1*jcwNG5k2Z&4#HmTiB(9=Ne?!+Z z10g++?SDCa>@`v@eLL)UQEF4s72k6<)UCf`KT&$0QHQ6hrL!G*DWK{GYzV9iz(Dxe zo(fkFa*(@>p;WHgp&v74fl9^tSIKIR9LyD$!>2c+q5mJ%u+Nb;S!t8nG)RVU zc=tAdf3Z&Ku?jb*^J1!{hr^9&*u%#Eou8M~9tVe{pfhJq2#UOsjL(zp&;ok)5c_im zKPUgFmT#Uvm~PDe?YxJbxpw{R`QZ;!Ut^ZbVBk$N<(bz6b%f2%#z>!a@Ii}dNopnk zN}T=D+-=&u+zqK~hH4d}wqJHUj2vjob0=HV)=~3CRJntFO-GFgcJV7`lg2$!M_Qc> zCgZ!r{iHH2C*|%%B{~T!r&>>JKUHdlPEjoM$#?V^suAj#lDay#LGb@O98rMX6`gDq zArtc`s;|79Y`tDz9irs5+h_!)!qBql^k(j=axhSb#rRi~wy)ahB2FnnV9P5J%X+Mwms z#WU0q3T++Vma!G+mBXPSB?B*Ux71J5-yLde(mTx>_kYKT2239=Vk;&p(z;Wt?)YyX zIq9WyVYfvBNzct?NV9bH?}!heBsG7H=xm|+Ru!8^s-jDdKKD!TBftF?$B4ooH2f$i zu=RS1L^Rkh9aP6I=>+yhQaYndN+{OV8cMF{NPWA}n$WL*DL2Ocmv8Q4fjdFn4ieVe zF4vdK%G(v@X+EY1mkprq#L|YDAbqJ@2QIDETRL0leDY1~GTm{mL~oqFo^tWSpsPl! z3#8)$EO!NW#Ff8}@I>0$*zCe?bme@E1cArW`y_}U=f}^L^$JBp@aZP(=Q|D?yO%)x z?%3GaE=Z|(!wL^4<>Ul`L9@BPQuG<}hwtjY2M|J02Op9w;l73x6-~lV{zD!xFwBh* z+k0?m3L29+WFW(kW_)^j^z`~7L=Su@ER1|;U&&D>1u@<*>4~2%&*3IFDWca;KpZgn z-L4JaR52;^4LvJxlRtJ&;PksnBVRw9kVfOY+m5H^=u?piUt+g{f;mS_38neR+>RyY z4IlmILP->bgI@hfOI?Y|x~}2^gk1~rH4P)Wiuxrn3;{nK%$LQ-ip~DKsB_VKX44WM z=f|=q>Mz5O=8S#p?mH=@H?5`LXy$5yi#}hU{Xp;4P4w=h-d!PmOoPbj(7_i4M$<=1 zdc0CC?~S_zMtRTPRm99%T9k_w+YI~FRE|l;>rUUs)OrUG!iciu(N;e&Pn1B~VAg9X z>f<@o0RUlU60tLd8cALOV6430n?Z8IDSdrtkAl=+Jhum>7)_Wpf_-UxTrXe>__$t} zo^FN=W56=VfL|5B;}ESeEUyz1aQ1{0FTl#e7nZ{*43YA1r>EQX+4-KH!13{f6!@j( z0 zs$T`4EbM5T=}T`;$zu+C1C)^bufR8B|@LB-j9-{uE}8ub(f#JMO3zHyvpXZ zEHqSYbln=!5FMSBAO1awaw?nGD!jb(d4V~T6p6ZKcUA{gKXPIutapk;lPhKpn-}w= zOK5LTKa|MZjBqv=6{StxTETWVDYA{f3nYrKQLR^!S0{AtKVNq0P~{1(aJoX)Gcl27 zbL1e#jHhy*2&suN!z9#n(hfZ7c4MVvv8_R740hvRs30G{V)gx>dXpKTQ8*c+b?@D4g+e7~z&nQ5 zbyIv6RL@9a0_DZ)#v%bVxKH#@C;V_TQ-O_U)q*^p@D6K0j`A6VWLRQ)bfFJz$zyXj zK{|Ga83J^EdA2z7FM2+Q5_=hIK`Z$`!=4*GtVZS2F+XwH?k?1MBWRZuNRB5edE=B z6gnwEsO~6$Ldws~5Kfe9-YyxJ>v!;IJwH+&d%xoW^Le$NmMFQpkr&HOW|#GzBhJh) zh@NduNh7q0GsDS;`JGZN8de9=7AQ^*85x*^#YBUchDS5N(dZH4y=Zp|&gNMx@{eSG zLB#h(3$Wz}1_$38o~3I1g$-eUH6Ke(POg37MaW~?pREXQ%1r(^BNyEAAhZlW8sawH z@+7#`{%8>*+hOkY4_sc(Qs)V)RP!;V z5^J)qVz0g?U%Z=8dP&ebS~2Qmo2Og#V*bvT=r%5wRqii`aYTu!Q&TY^^K|%Vv94GY%Aywry+MgnC|uV7HW`XKk2+rDRqI(@4=Lo?M+#hjZ>+q z9mOZr-ZP7qRy!Fz<_rwIPu6#8FBqNEwpT(%EmwauVm{mHP_byickf!*1^KWQawH-6 zEim9GBqE|~WON6H%HveP%OWW#EcC9e7%v)#q(9$&Q&^*MePHt=`}FA^@3O0wVt*0A*>D0G>1m7TxuchM@UQ;Qcttt~F6x1j{R= zq!h<8k;;B7yEr(1X#f^Io(h`j4JKkDxcggMmzX)~zB5LriNAP1?lA(VzR|^3q!ZHvWWXUnL6e4VAsj_R6lcVsT5;{!{u|nYH+3hAP}h}y{U9^9>Za~-y`U)9(WVkj zRQhv)#(tOd>*aGfo*^_c(-E!%Pwsw*^iY=Qg=t`RWm+*00(BG}cJmXwrsC%>fM!VP zSa-SR^Lff3kJQV&QY_wbtP#zDlPeq>jXO^~8_$nF^lubFQNnqzkdmtX(V)-CS%4}i zY@L4f^oyqPu`u`24^^{8NH6q@-M!7G?ljgncB(F3Tvd%xmBHPiZ;J`N}9&@n1vOHHXK}l3o zDA@bLmx?zMB^ly~Wh>~I%(2|E`5p=Pc{LzaR-!_E zwTarYB|EECppo@Ls_%xiC*O&_U0F6RsZm$Im&8$O$$RnJ#q%jAJb9Y*Vnrnrcgs$k zF8%7^H7KR5tR-hXRt)%&(3vTd3H=Hmbc00Wx zQD$zMu~@Z|jI~LFQKdUW>L6sTC@(Jz&e?o9)(|moxqu6SuT!bb!{W<`|H=kU!a8uV zf2t-B7C^b4SfqD`6`kljr*M^+_4xU9e2Tspe29dWf!ZIgSU5lU~C`y00jJxeIRu*wsCd_d=WdC&;Vx4NBS}> zae>eZhJcHgpx_bAZ0?QxV@c5(d)W#?E5O`R8S41!lrRK(m8yg^njt)Y&;YpC4KlBu z+yX}xdJ|UCc+(>HPI3dDoj{{=b8|`hg&@=dK!tyx{QzE}!1SO1pRPXMUm<`CH1MS1 z@SfNlanT2mOMDMbO`txW89C#)xzfw#2@V&?y-EPpP|#hk7t(4@KtpB=Wn2iTsaZ3JQKzOSfY%Qswp&^o& z90dS!9g~KWMriAC{jjAMdJk zUIa?ynTE}BRaiG( zd^9pN6ats7d8`pGH6>To)|Lla(xj@In!5@sE0f_NsmX=;rHeUcw=&qU{-}PrPv>u! zSc@1C`ZRrowgT-K9g(fFrt+7XVbwJF@-K2h``=ZbCJoKe8t?L}%~wb)z?IQGgMXAN Zdonm~Cc2pNckBf4rK+f@fR;B6{14lNa>W1u literal 0 HcmV?d00001 diff --git a/text/protocols/tictactoe-1.0/state-machine.png b/text/protocols/tictactoe-1.0/state-machine.png deleted file mode 100644 index c97365f8762cd89e93b3ab42f56753e5dff44223..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89695 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

lqr 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 From 00dfc84638bb5b2cab3977fe5cf3a2f3d1a3bed6 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 28 Dec 2018 18:17:23 -0700 Subject: [PATCH 14/61] Fix bug in state machine Signed-off-by: Daniel Hardman --- .../tictactoe-1.0/player-state-machine.png | Bin 46050 -> 46311 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/text/protocols/tictactoe-1.0/player-state-machine.png b/text/protocols/tictactoe-1.0/player-state-machine.png index d13ffcbae70a11599d822a39c25eb707779c018f..49de62dd7c6b13daf9e9e5ed4e04834aa8c297d3 100644 GIT binary patch literal 46311 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 f4f0G)KHXxLzb#j*PhNK1EvfP^3-B_Ji8N;mxG zobSKw7&_p&*R$@m=9+O`*IdJAYAUigSfp4;NJu#Ha?%<|NGPx1 z=ef)1@Gqb3E;AC+wOn5w zbAm>+ULxJAAH${|#ZOPmYiQ)r3a?)!GM0aDLH|TJ8QE|1bS|*?gz|iTyx>y@X>-An z>Sk?cYto`|piy&he}DgyYNS|GaX|g1im&*M+II&(14nm`$1H67=r{pVfshzjk=bUF7 zMTZ0YRpFN|Z9W0TCAwx245ZEG2Ara!`eondd|$oV!{XOp zwH0=~F-UFy?9-MT>uf@`_)g)MH$E7f7R}7JGsTTIt6yBCjV?(Xnb z4Nd7?VepEMa+&62RrO1Y-`K2XuxDl`+UHg36Ug8wzAn_|Ew`GKQDm+D zYF9p@@0{708dUPto`3ZIPyZ|Q?XdmuQ;;rO-v_>sX=r*Tg)(MgKN5~ z+%7TadcowwK8M`Go5$V!l;dp^>uDodUi6IX74!EI+&~v zHI0N@ekEh2ELR&uX^A+$c^;9nBQonWqN&NmEpWNGuM;2mB`o{=;M=r7nxLEEQR0UXRO;8oRb% zhH|-&2DST@k?Y=kp7;EfUQ@Vy;fDIXB&}Y?gz=x2xKp8RQZ#6(A1|3Q=FhS$kZPus zF3hU#^fvg{GZg!ue0~{=N&3mkqjIv&wII(h?LHZeX6n>u;x-$6f{&*6S4O_l5V%P7 zu~=zO5n&ae6)cs6C*?&qdGd8FM(8_}eUCl66nR>PPyNtw_BF4N__MWMf5J>WJR)v> zyO84%^lk!S%RqZBB3{B14o1#e51seI*^NRk3<=Arh)%z)&8HH-?y@0PK$jTfyM#ad zG38zEMEH>L)&zNCF_%6`y%x1(O!4PLqSe+x0sCI%AKvPE4J@@W@7;L^>Y2ZDWR`BF-hsgpQOBy zSx-B4cdsZ*jmRA0qUR@Q5Bp2%-#*!F>=-~rR z%V%y%g@Xe;y*tTuN2Q6YR6XSm-G;l9=tv_+!Cl~6wpZmY6CatM? zp}zelBXIG}L-n6Yi&cV`=}D%CPNkIS#%V32j3SytDK5DZd0_f{MtidqMKeQLg+&_G z{3}>o`tj=oBE0!ytCdwkZRDZqpIIpKNR-W00;ozdx|4-fOVrJ0nBlBg5tu3~ul7nt zZnfTCX_meBXujtgPj}-Orrxt}y;}Wfa(s8|@0PrmxHIn|;f2;J(ID}8jV4>Wc`cf( zDSFpFu1*@K?}oDfbMqA}o!|EltC}7Ta zEwtzsx7Q{rWBfa&fbciB9&jBa-yMi?-uQC%Lq#YuTBrWY+vivFq-XCA?DZawZb$Ht z9}w8@wPx+EnkA_`xwgI-vlabRAOnkM==p%-mw43|3zFS-SsWcVE1nVPZ5!dc1ciQL zd>)CSIK!kACxtfJPexfvV`R>KocLi)Q?xKd7-L(fX6>a+m4OoZW0YSj+fMk4Ge5J~ zPthV=eWc`=t0QiZwk(o{74>)LtjFemIx{q)WBcl=VSDp}13jwfIsb9ZzQ3tnM%ZPv zVSMU?vBmj22lp$R%oykE<*Gx-8yMTY&fdSG%D@ztl;a_>U?4#`Ai5p%D5OnGSM}OU zx%<9Dnw0D{@`GbxH+fQNt}!aKYrZXfS|_D`b7?rv=uzm6JNd(d zvPe=`)uPenVUMUJyfb%N9G3C%%W0N5-X2nBJ>90(lYCsul3JhQfs83Jv-t_nF}CRT zP4be0iY(%R5WBliiBuWRkPXsm;sWfapA+28Q>|;meIzVF8FV5d!z)RrE41rPtw?e; z>v?oiLy`Pz(>Ka@wxcs==hZO2e10={M{wkeY&uaHosv|L)~dR1&$Q+jYdMv7#0$ZK zvhRJ<1Iam(c3-pd#?c>LwfTIAcI8r+!^YS(7O|7rDw?av*%F`KaH`%a+jb8d)TqsC zSw|Fork$wRy&n0(0d2+FjRLGl2q;;Y9A@7~ibj~bKG=0EJ> zl9axZttj{KmZN)yEP;xc>Z2$8YM8eKwgn%HFz97mk9zz$yUy#GYSZdt)i_&EhH6@` zJM7uH?NNs~x>2@bcc~P&B*(%X*v3hCYS9Qfo(VqYX>ors$LkQVD!hfX<|wa~_(V%> zdikN>l!xgRG&yz?ZXaRILJ~fuC;CPNPf`0mAk7PlRSYX6D(CN+1*8tQIrfaJCCo*o z&uZfjUsm*tlvPWxrq#Pc;E9<=l3GOJhZbUOaX|Mg=kArIJQc$pyl>qVd@}5wUHE3E zJ3;ZgB#affR29f}-#2d`N_TI(c>9(wgow`gX?Yxn4LV**B*XPLcWBkmdESXnJZHGa zSlF~7UUn&=(Qr>;SCG#OA ztGr`wS^}4qR5|2u+^|AsqUVyvY&$YzzZdHbmAsu~dbN5RpCB~7^0_Vn)LDgz3YH<% zCQXj(@1txaF%Ey)KN+fAtYO$i!tWQ$w#UH;e{45@K~2Z;STDvx?}`=*Aub*R4Fx|{ zJQ?9@DdGcseEr0&$)A$)RG3o&81Lusjnxdl=iNcmrJQ|P(E3OMTc+Xh(F#Y&^hew2 z#aUCV7%}9ZO+U8qBQjjt?+K7?&5X58AK8mEu@fo0j}LuB%jAZwOKZ@A^;U-Gd|cvM zlJid!5!MLdyWxouV(Cwx_3^#D-WA!Ex*=gy?n{zg@8+doE!8;}MjV8NT|UZ9`z`g` zE)%C+>s&hFENYbymZVd3p?lHWw6|tCZU#@@hd3x*k-s}@apT%1&cIcS*#x0=(mEd- zztuyX&c_s6^6IZ2eYf)#!JwDUUhDRk#@3M6 z)i{*e7%_>vbb$I1?Zh*|JmnJdy%Jp7ZY)OBu3do-TzK1h`r=7Bw!tdR?Y=F(<{BZi zS4nEDDjmCX)TtFo7j;-DGw(~j z7ALP=%T9-wz00(=+A;0xVPmLag5gYT#TLA zj8-~s$Ko{j1!~l1E}wD9Yz%$DYvfTPQbh8Wc}x$YcE@AWKGzRNWUw+7qTdM;rpQ8* zj&+LU$|WI`idOq!TDg-OESE{+uhx=TTfV0MY-NTo=@QoQToZL;0!@U;^yg>F_fa?~dbp8<;s&HbBq6FJE;*Y?GD zDdtuw-hQs-?&WXizwXF0PhGB-CI291O*?=V8S<(9W+;BPE*U?14X$XUNzOD)71Bp< znNz=~`%+d~S1u^1@Ol%Co;ciFe$=(Di84PVq^(ard#jSajJPD&3TbrO-+sswJ>JOu zk*3Z%_F?c3`WxR~RS{|KN(cU+itgj!)Okj=qS*B^UkYy@t7$mfE%->#>DX^HXqlSC zAi;iUV?-Fmu2L0aW4|ay&{l%7-=$_mhF>O z<&2&_LrL+Oti@Bz>RBdtwyV^9Q zmr;yIR2re5dM};IOIcA%l;7gfxW;GnG24SlQA#}fJ8BVSrGx|F^YKdWy%c0LyzBwz zuwk@@9y!%9gVzViYJM;2w$A-4p72Q9q)?|EHv~2keDCT}c2S+VSh8Ctp;mOhTDkBY ztKtU5geP7^tnB45#r&_==6;z-`P1|;b;)Azq|`FGX51y=)*`@Bnnu!=Yw8$bv_LnA zk#zseqTTg*wkM3)-X6zTo-##nhc1~xGMOV^CDvkm#hld1ncsP^yYXu3V7Lis9WnQd zttYQJk2p%nD5$lKy@Id&L=%?{z4Mg_J9ON`(7nG$l6fZP)AK8&`@0r%2Gl{ZDm#J? zBu)FW+-}YH`r>?KB>J{RfI-qnGj{zF^E%3}{ku)wilW8~3fXH0nQH|ZMz0;}uO4qz zIBcR%bP*J&Ouv24#Q#`7qe}L6YC1_3$`=+YZ#Lbe3LB{ukCQ#(LnU?<4<(^2!?5p< z-noTR^C16FJH`=6hI#dvceboK{Q7%b+F~UV_IqTu;fUm$uT)xA2&X zN4UeLz1~qr(d~*^rl~FGe!zJ`|3TXLvEhq_YMb7OkDk%2CdPPjMtqfN9R#-2C|Ath zdUH#XNCo5-V_Ddx9Ce3W=?zKenu#Q16N<&U`#6mLmIRvj@(C@@EBgE@Cl>s~tYOW5 zx5qCk+jGKYE?-jOO}E4M>zbuG^Gkh^+d|v^tR1B+-+r(Yt$k@l9aZ1u?a9_eyeiGY z{c5jNjjW*#WuAa}Qy#(7+)TwbVX|uj2l#TvWw+F>hOvb%5X5agf0pU6uQfOqTYULO zkk9K=G}>(9a)r1?byn|MbXH_SJc`Wfczx7NZnc}3^5JiGUN8mb65r+ANT7%z3_!~g zl{^Z=EHS|?KFYozku)CaieO?}U}j@Raz@h?LaJE~b3x%^#5qzVZt!xtn|dkd4leoA zzGQ{v%io?g6ywz35=-Qhb2rg4k0i)5xWg1xTbuUT?bJDcQ>w}n zRWC$)YHop>;9s;AxzH_lC{BNz7`*-~_QWl_IW@D))9V7mYVKE_bm)sQBqZE+ThOd@ zm6e3dogLXsEu76P*}NTHK+{4(5)t=yF*Uchbf+@2w6=8;rT$spOig8LAxeFZSD8cE z<&LF|t(>o`rKYcnmbtIJxu6BLxEPj*w-8L=Xz6ZBVVNr>=T388bNXz^=1^gyTZR76lBE-(_ z<>kfZ#m(mIYR%3mC@9Fz!NtzS#R?->-F%$fO}$y2+-ML}{4s~LrJK2{t&6*@vlA6! zPE#{y4|h>&YIsid=j8Cz{H`~A_~#1{zyF@z&E0}s9)970{lEZrE)EU>Rt_#!E`V;c9Mq z*VEF;o#wAEb#d@;`|CSB+$<3v{a&|&g%vw2>i3)f`W;z$WwpP52Vq8QTSu4Q-$0E1 z>qrapzmIeAaCP`S#=@N4(!tUZ7UBjobN-SoI z+f_)~+1vy1Qh8}nYQ%blES$}4ErfpmXlBL7#bwE5#VWwhZ^g>P&BM(qD8OgR%EM>Q z&B?>ZZ*FD9`Io8Wo!s0_oy;u}Q^DkHwlEKm6|bNrhk!Y&rI|T=QNWa!Re;Ni2Y$5> zfrVf8y6=Et2n2L*!Lx7)4fQ!|X*Fun$ho8%W)y#rN0M^CF z&1=rZ%Wc7F`gs< zjgyy$kAsJYLqI@~pNos1>mP%3EM48e%Mp`uaT{;}DAJl6ZmV;?*{*GGilm5dpZ68o97=x z|2~VPtGk!8tG%kLs+paox%+=V&%YY{_n9;xA-cJ{`pEwuHub-Z6ZylZ<>0%{u0DTx zzozAbKYsfoYdP5dHWd}s?@S?NYL2j?D7BlZr=`X3^8-8n@yOi9)XCZsQu3ei__xn( z|CO)var1*)bFlIWaPYA5nDPm*nwgn$vT|_=lGYG` zaLy2azt5S9@edbe`sd+ZHkJtgB*&^k&vj65=ci6i&(j6zE%5LNRu9g6 z7vkop-1@y!mr{2``-OzEVx=zMDhk%jQNgF6V8gui&Ok0eQR-A_nGQ1q4<3b}y+Ztp zCxs%9`1kUyNAG@r93`Rg`{T=)w4whu<9;xhIc$c1_#pLla4@g1u%ol{>E{&T%)u3> zH{|Th%rxxmswd5g@oYF#s)~w(=lcf-oo#J%b&mB;lcuJoZ&8!cb^5goer9V6IpSkkLHB}vIgzVp$tH@?hR zkG$8r&COljTE@i0wA#l%t#xm0rZw1Z;pHy30o42-?Jz(pFjAiqt^_O(X+k%2e`Bk>n6P5irIXMLv9(j3r3YVFP zUQPd4%2W@Z{}77pbFxvrGFnU-DR#{0+n8EC<@c{Y$KJD9DUMCo_GyStm^e$^Fm zadDkuqwx6nQIF{-ttK@q&WWp|603Wx2dl)wo-E`-?h;I)9cHE*GOSlq^W=tM>8`sBw`_VMmSH0@rq~Qf&+P)4BOk=Y6|LxhROi} zVn#+r#NqKe@o8zQo}PRPOykwgk;TRAE_r#};^LG+&!1y$@9b=CZ4I!k#>K@Yi#{Y| zXJ>~!j^=0YMvx1;?yu{C%|CQS(;$Cq@No-1V2e*lQ8qH70IQUgl+Y*HDJm#*b#=9L zcRz#icAcKJ`T4h1(!`YEI6RY)&W`uy%KOFIy1OxvlKN!S)$!4Tk)55LZ{NNx@Nl1H zW1`x*th*vTJ?Q;=mdC-t_Z>6}6=j2({7=4C+TZ&=IazsNZ*MQJsMzLIJy>ckYhYkN z>esYc9uN?aEa--wqLOoIeh-ICAWFMHXLfNBUE;w5PMrd6>|B);q0q=k-1GDEd%fkb zOGJ$1<+VbLeEFj0Xbg+4ILkAy)MsL2bK3P)v>h6HFuZZ!+gsr3)vK(VbEii;2|Tv1 z_AichmR7#JMGXxNB@+)wh9j>K3Qrmw7a@c=cG8W%r!I5%E|bLBrdP8j1}=pb;fuRW zSz1m`MYoxl)cKN>9jBWb)ys`tUCYY!3+-k(P*yiBvO zvXXapaenfXf1<)44)#(mGAep*zxag#Nw~}<#^Ba;og#xg|Ducxsm7zlB%J-N;d{o~ zmX?;v*=-DIeqR}ty*9t+#cJ4rcjw!W7U4vAbibn0PraR0!E)gX|fQ~l<&(@49_xOh^8co~K7uMD$Oadu=mv3on zXk5ghgZsmar98HnOhi)K_rK@b6geADg3lNG{&>bPv^iNH z*Jq`vz~u3x9dmEZ_(C7~Ha)!ztA2%?VU3IA#`juH?1n0*$$UstnS~6zyxQbqe!8N+ zT2QgnG_#e|Ul6itz$-JEgL7C7#uZZwN)&jI0f)?r{wh-ZyrzmB!W|Ng z9`Y)G^HI3(dTA#q+N*+l#X3QVr1d;Je7MS-gILSfHcvyrwm6(ZRNrx|?C#ktZlGGw z>Tp4Peo>JVo}7$~Og_#{KASY;p|Nu7`&Vc^gi=U(?PA9(Y-4;kDo1amlaY~WnVP=U zP{=!&dZ>!L+KNG`_29vS)iLWd?V#f&@ryAFq4v(s0>~NFSZV_U1FMr>)7lUV;Gyy> z?m}6ED?|3hjoD3yKd@P6PG*8}NiP|wsHm(GH6Mm1a$BnuV5t~V*>VsMJ^b02({#G6 zxUjU8gS590Z_Gy`XJu*01b(ALA9LIvc%E71I04reeom$TTu@|hd>4e?>TgIfbjhnw zKGR;bs7_)#?w*nQM3ti^;%^eavktE4ZWM~vXpv!M+1ErKr`u5t<07xI!=hYo(KdG| zUzfX`HFSPOuMyHqraFB-~a!q+M|3P4}SoHA*+akdHnd@2wG}^Er+WF-EaKkUqUi{?%@{ ztgI|HCME_&OJ6^+OqZpnwN(=NHXR)Vb8Ls1`p<@)2&jNbkhJXZ1A;zJ$5Tx&~ zj}4kp=`~js*461x7(tkGCH3hmTN*mPA9K)wB!!qLE;g1Yfl%0U9ehO4Eqh z+O9Z7#76`B9P;l?G=op^?9KU)HHqY!;26j45%z)P{M?Q!>V00GI)iGemTV-&a6~hk zoI$x&IGlD!2->Aw$dkA0CyQWRu}MiuT*Ox(AyeG2|Cuiq7qYPkIgBobUz~MEbRj<;H0233FF{?uCWkN#2(9lr&=-SHnT5cprxFV;&+Qx+( z_>%U$&KxToC#nWc`c{VWt|LW6L>wL-M#aPg_gT@<(4ZC!W3^CT9Lg3(<__CsWoJK0 zPEOWQZ7lcQvqQ?r$fy{lrl!7(jZGsen&P(fnRj`R1Rwu_vLQ{K=SKdSA%BOet1A~T zFK_s3-UOwZ`g*tBWpyL}J#9Xx@3{-kliLs-(s%DhM@6+fyUxJK#Pl{JJr3{*2T?CYcqe3_O;2~Kf^Tqt&X+x7gYKk(J7S6>~dNGK`$qi)?<26M1C z{6Z;i+$Zf9*|`EPWAk7}X)?6ZdAe!*^l94@oVjROiUE|0*U~aFKi1YhEu{rU7!`L; zPp3f%mibhuU-=w-p2K}v?flnMaXd1z-gojbU7tSP$r-ej%$;<~$j)BmQZ>7$}x*%U^BsHeY$xCJvHFi)~YYD z129abATeMiALZY^+4#`w3C_)ruw?+8EJh7)hK95}H^#GY#%srUnx=eM05+ZukxGj@ zj#tc{9ZWC9sEQ59h@r;5ehmggkx)}pi;<*i`I@CzI zy&e?Se?u9+RB7BC(3>J0U+cE?A!OCC` z^73?ZV2q>|_~O#%l(_`!)Y+|0O6%n>Z?&|vY>+)u9-(4n46f)_*x+9rc8dSn+Z(pR zs~P918=1>DHcA7VqM)J*daT|+RMKL>@M13tY#bX)9w z3u&YMVP2=_fHRS)6zxlZa<_jFf_XjBfS!W`uVx61f{3V7 zQ&se?hX=1q-pGIr&o*RaR1TkQ3s_UvM)mY(pbVEWF>T9U@A$g9xeb23xYvA4aKFl7 zRyFYW`gI1CdE<-YQG%TJc|QkaDLYI!ejUz5ayw6nO!@67JNmw(Q+&;1C)PNUL)f_c zRZ(QC{d&X6X1%`2-sw(1f33q=!^L8fv-ic>L8ax|v`fg7CtMHr9U{mCrR3!?A)a39 zXnIxJx{IcMyn%;@aGuJfC~{#>15HxnpTF^3fNQ*0B2QA^D!7|EfG(WuU$x*|!+DxH z6$=WAio-*Bnw5_(o$POD>gnm(eSIfCZcWIdn~p%@mvX(Pd}N_6czRZ?juxl!>DM}` zDLObf1lwB3gp+2eBnu2UEPXx>c8t{+w{cv>v8wee=>u=jzBoUt^f#(;dFu;lgdn}? z{Mg=6q6?N6S6^RW)r3LmrQ~xF?b$k^%&!?^23aY;|>Y zRSIM(X+uDMV-+@bB~T)ONyvqhaLe3Rb#W=tuXai)o7f1K;UDdvC?Ijz*{uI*H{s&$ zu0gwu`ii@3NRJTheHY_YH zXXoZJhlv6CmX()p{rY9Ie>9>~5C`ZVociW)%lzVEMl3ZI)eMGDRrRnPov`ptW8-PU zlgu#(J~o4zpr=neRkv?kub=!JicRF==5{g_qrJ4a2vz1X7FL~;t&s1ojhVSQfF)c2 zzx2$^*zk4qGw~!%HMO8&JIB%qsmbe68JU@a-oH#@{MCxBN&SsSUw!2NdTz{~qmn`` zB4V)lB{UYh+gUy=?U|Ku)XJW3AyZA3tMnZ^&g@_(qNG#>=7S)UNd00b4&|r`Mb@Ne zH*EcAHkuK%PI>D&?W3CL^{K`r`55{K=chga5Zn9{)7l7yKwLBvo)X%Ryl=HCx9y*5 zGTLmu2mr4Nefku`u+BX?1i?mVqi$T-2jt3^19q6muf2oN6t)IqvK@bm4iA*w5iIwW zwb!gd7#qZ@~hlh8Kk3U6aH5J=y=N zVEj*y6Tevp6@spts)$xp)bQHxJ>U?xwYAX^NEe`Vmy~eGU%s^8YFdg$dE)nC z|0}uWl$}fAT1Bq|pQe`9(ELLn$Tf9!=Oz<63U3EjXsn);FCUfm zb}&a()5u8WU~}?;i%S&R5v6tcn4E&bhv8uYlGx+sw>33yc6Z$cBaN*!XnZaau^U+c zDsMM-C%l!FmEL5*7?@Gf>{O}Hs4+2t+gd|i{noQBZZ%EK zHjrD6mNO%1InQMgi-3o&i@hZBFW2PkXz#anbc9YgH=oH)TIuKzf_ufZ6a7HvgqkB0 zNf8bRkoHLp8^jf;H?KktqeDVNOZ|>qfmS+fvZCj<>Yb^Ya02Y24u+}o zSUX%TC=Lq?OMiHt4`jaAEqx3Kt;Fl6(f-Cn=eJVxS}0+a zYzhFUO^>!0h{I)|^rljt>cZKamgCay?Cj{(xZG-cin|0F%nc%^x0;y*kNZ&Pl{8j+{dZlKUIyySOdrmkiC2(D`wqBy7B}b6HRKM-+BraSW zz^5OuUG40Q45tNfad8zC6i81iYzNU}x)C^Hvd*K;h6k{6+iTYQ%Y!+%AinvX?Tua` z<_MZVO9CBRIfxvv_K1s>5_s3TQU78yg7K>ej7W?wj8edV7^1 zY!Ip#5DPLfKjO@Ru;SvM+LZkrFNh%H5{G{*5c3%|40FB#+~RcgUh@y2zw_WU=3s|E zfgyJ0Ko`K04salEPyo8RyJx||=0Dn>dHeX3I!y{8m@h0D01Y+F0{dimNy>`_G95?& zZEpRdoq(oRChPf&8@90sUxW&8)?^M$I{5jCfL&qP+OiVFJfG9rRVSU3rs0M!Mg7${ltN=ofEJOI?Z z+5(INdRLvz}NcK&Wm|@)6i7CONqm09eVG!zt)b<_kS> zr`z$(@5;(vHJ|SlyRVIegCbYvy=6A#yT%%@lQf+k`vdB`DIiTWG_;Zjb24HVr*0H} zza+1qqdGTip$DVmPzwmWsi@!y06hn`e(E#pu`7V4AOM0LdlkWDZ$jQxsaE8bw>FHDeeg!<&iGl2SKYTbhGb14>iCpiwVFp;cstXeGa8ZSMQ`763P-rKLH%HVt-tMcJDUA>VL@goKn>ej;4#PwS6m(p(-cAcD%t z0^BeQ5G^7#jv5E10JG&X{eTv$fjDc#h9SSi#Kyv9>~c&T9LwX~6~DvTr+_-}Nl3ci zaGEC;-Ua0a5w8pk3=NHq$gn9oCMHY}z=25$cx{q_C@ml?Jon>=6f76sv;aYiWMO5c zp{6DQie{BlQr|~7i*I!v%wuC?-yHa0#cXVBNH+)wO5K)JJbzAw162h;oT4(C&y^MX zwMR=v27PmL6X@mz?UA8@K`+RmpCI|UczPnzL%^vwKryk;$%1X>k)j_V3wuMr)UFlP zyF7S+ND1Rd4WR2bY<;{5Z$rnW_-;l5WN!wfIZHsG;0`FKvB$D2?DX?b|G?jIa9Hpx+T>*N*|((&?E4n%5T-Me=WRA^NhnJ1o7m#n)(RieKRCLbsIWL63V z>j{9M7zWjBNW`P=EMRG%J75l{u=Y&BJyGVqr`iLr^Dt1JRASWPjxs{(lhU$Z;MH~>q zy@}WiOu)@R*jK8jV$mxL>FScB06Eilf4v(Rzml>t4v=f0>#w4t-+EXsPc;eyf1nW( zB9$lzPZjeQD!1y(c>n(8WWCoXqVm*u{mcNTjS+JLGg@HtHW(G9;*Y>s?=|}Fp-^#fM4g`c33;rB6cjKcDhwz@rfpBQT2OJn6d4MO9nHri z@ue{{Gc&QW((&^X0b&OS9jkVx1YC}80#Z2IrAwSZ?hs`Y#FUR|7pK-NgfFThK-5SD z%H;|~4mJKb6V>5+4So>faMUwpN=;fH6CNzUOu%2cphaZW`v#meTjwfdS|BB;ymzFe zI1-e`Yo|v?{QT z86W|t#yuSb0)ftM>!k#Z7VIuSv z4!a@7#lEDcV-AZ@tF^SXx5n*@IX%~PDITtKQUn~Dih&3ZvG`0QU)vI?WpFSC=y&Yi z+Gq^4RP^;pPY!-AfxZK^?h#O3sEtQ^#ese8&#oUeUz~`G9nPQvw!69UQ1NIM@{^4X z<5GVbMoWLcYJDm4m$kk2_I5lxy!5!xH*emcOIl1S&wvzHQRcb+t(4iw80-UHlLZO% zC7IwW@v{}xm&BYX7#J8(bv-7F*uPdxVnI~Bq!e!&JD{PamQzuo7ZFKDL?(!5leP=< z^EM3mLckIAm9@{*r$M%396lUa0tWpK@NeP$YT#f{Sx}+lW6xtIA}n05%>aU3Prh~m zv3P)ACh4mrc`dCQ5UN&NKRV*`M{&>*$sH9}B>hqXd*kl4;^y423+$Ic2v=lwHacV20^v6 z)W5VhYPw7-^4q!#J<_W!5X9cIp+vv7wr+t=+Gx~|PlOP z(8_#qAoN3byJ#UgGm{2(G2G(}i2!ofhwg6qdKn7~3((|(fakxk>@h1vnB2wX%i|>I zFO@*n0*KL?#^P*lW>&G|Xoz(F%{YBSy%E%=|jn29OnFyT?rzszsl>K7UfJuCHsZk}zK6c3?PPUIXDNV%Z zmGSv@{P>b=1R1DxDg{LyQaikVy9>ZhK|ui^1Bt_`msmtZ1ggns&)Hs0lN^-~IT{8= zITUYKSJxWvtqdLIO$aX~rI$MQ)$V;sNlq@Zo6qU9%Dh)>w7W9+6nGD4N*_{19}@FB z83Zpt=UksROA-J-pcekKT@1*%2t0<6Y7t&HTyU=(Fql*A0wHVE!_~YTVlh7f&-xTl z_hpbxHP4hF&pz<*aKwup^zD1c}D{QWDF09RWFK}^mpEMys?AqbIGe`?{d=P2(z zBPU4pj9K10ef-^heTdqDUbDJa@$TI_G*#7p8Gg3CPb$Smjk;wPnE3ekwDk0RHAu0s zv1}wfqvycb6_BJEda32hx1P%QaOu$#bqeWkYn`9EaZcCfwc^> z#d=I9d}&KnJltFh*sIno zJ_q{85Fw-~nyUvp7feIW`o$+F&^Nku`}Xt1MAG*<%n(xJUZS7`+;1wXs)TkE>+46K zA_cj)UP%U{BN#70hXf&y{E?JgNO!P>60;60P_CJnncMpM3cIbQf5uSWGpn9Rg5KG^ z5q&p*+irv>40x89We27 z;sG};t#m1+hak7qNqnQjtwZaSg|u=n1e_La}h;sd}&P|&6OQ$_Wf14JQl zAc`Akl=jN0@oUhW0EK{-kB<KuT!9A~r+_Z`^ptd&kPc!Ub9-5E5?y zv;g3;C_twl85V(#_Di6?9}n)uR!^Iao$K*ovZutuC1ND{mo&Gs{P}y zuht&;N0S01e*fN~EKn10DRAIs&n-D6rFW28$4@|yK{zc`1#nu*d-eq^8jdxy^t6n9IW0TO40I&u~2_;tJjS{_)_v|I; zjeS{hXEAO{o(6eeDNPJWYiEPc4l$>hbioMpL%g8**@oz>L7Vdv@DLfug)yJ#X=%YT zGs4$_*_rgd;f#%sx7QRxbbElLJ-$jV6qS(hthqTbGv>U+w9OkzX|3Ps1hkxVYhCH! zPKtn_V03)Etf}cOAO~?KWthM|en2SCR*o7$?`#UNOC%I-Mf(U}$Yj7>9*xLuzI{sZ z1ITTs1=kj$CIK2WDlkmuG)D)4-MV}NWCK3n+NX>B%>#BvMOLB+k_Jd#f4UYt#om7b zm^PvszTvUGM(Otp8FY?6?kM#E8X|q41I~wNa^kRsxa2i&K-a1bx>lG#Lmc?rfW9EG zdqYEmQ(XfNF76Uo1OsUQ^AU`V2;t2yi57@M2YC04A+^P-9RK?DHjtIZ^CetoS{{k) z^l~Fu8iH{)9R7I0S~ZSn4k0c>?5+-DLrI1<*v)xG==mIhKn2N&hK}yiiw-F`M$kC8W z&WMiI*0xVSV5N#78W)G5MMv=2Z)vfAVI9T`VZtSelU4pXwOrSpAXcz zDPLbAsqYEYf0wW73cUGJ7n}}bWub5-=_Z$dpA|RUT7k~7jX(JsGaK7S8y=&<-1a)s z4{Mym8bHZ_vVsD_v&ue93In07c#W9YdpL75kOlNvekH-uF$Vx`GaDO|7PX8lEbZOh zdEGgha6!tndZPJ2Zf>oTqJB~ZE>uD6g(ueC&n!C1hf*UhU%tP`M&#kM_T$Ib`GYzq zmyF2Be(mZ8@W71GwfiY5K$PG%U7_*n!csN>3B*OKb-{N|GinkN5}E#mK$4;10koPP z^#VG?pspdh8rg0`pm$aJH>dJvjdC}yZ69rCpVyI2CMG7**OU0Aak=8}@~~=Bh12bPd}3vbss-llrpzB!`oM z8Uk~I{|xLJm>N<3A+6fRI0N;s_C=WjX$ZYv0@1X9wq+B&JuM{Z-zygE1qBYWtL(!f zo)%!)f&r%jz$ZYb<@au~S7ZweiT~Z8sF6qQ9?69pGP}9y(D#M=4{8df4-cFG93=5M zB2YABM5s)NtBQ7&aJZ0Luka;>!=(v;9dMD28yIbyUF9nv3ckKVKqj0f>ugnDGO@EW z+`9D$P6m`y(EPkIF>(>TRjDw_DPG*Fm5FM0AZgaHB*bm77ewqoHaAs3wGc{)0Imrt z8gSc>K;I4zy;%scAtWttE+b1zi*9(QI7GB%AsRmAjH2{si~iVnukS3cJ}p!1L2ul zTYCYCLMY`b2slWFhDpCjf{YxD66MO0@@A{5fQ8qU@$P#=)}Yx5Xm06x_*G3 z0<0aBVNmbetjZzTNPJiH*_Hee^{bihoY^n&pVN$QG@>YPdtw=96yR8K(5 zvSnf->D@b8*2|Mk{s^gzG3yYjKjMxeoczp;3EWYnCHj4%Hvk34jy6sMqTh@wf%Np} z;^N569q<)U(8>US=oIRQs^kC~!6zl{sd+Gm1f--B7;KheJVM%lCZ%4zCo7;`Bp@y> z+w<~Bpi2y_xFfRr_rQxYkg1=;{@maRf>Q46%#GZ4zMC`12|5JyWua2wDKJUhxr2H2 z>g(h`_rDUWk$;YjkUfCcLDGOLkbph{WBf_hz*#g54Z}gs@ojACK3GE;1h~EK`LI0L ze3czLJ~cTr)~>?O5GOY#Ml+aUC5-Yjkl}YHK{XlB{9It2%o-Xk+#~uodyxYQb$vlr1`+{8Y+MK)tHS9jv(VEJ1*tG}73<{qozDI)5TpRE$A=sy zME%)O{coC}8J85!YOW(C*S?XmRPOMaSo*rJSn#}?QN-;m5;tK+;`@vPpIsSS(5tfB zA<%36F0Haa#=vIT7FpMqbwU(T z-qzO|9PpNg_=~LoxVq)ZMaOd2gkapmm*2OqjL@-TT)HZQp)yZls_^q6l3b5KSH$32 z-g~A@S&2XykEDnJ?2k5YtqYZ7X12B;7I|I6|CZUhH5QjbfH9pjVl_LN zQv6`LJ5G5%Ao6>}El`?9Ny~;O2U*a_RG1H;=dRiyjY?a_vQk4o{qek`oEy=r{n;B!+tTRbVysa^^AN(9D(iFN-qL}iX#IR^rtY9R1B3e@;~;nzD3=7 zfHO1l`TFwAXo7;`rGyS^WPxap*x_fCTv?+I6is`2cJFyv#_EYfGwMDnt>+cj=%%(M zBk!!-^ke?H?*A;G)UA#EnM!|6(I5vY*_(h*r~*j_hxA9xpAAI1QBeawiTVfjMfdu* zr`Y7%8b>GBr+tetc9R|Q-^E((oOoz#;jGW%)gjXIC1UP~>fB?!MnH}=4{ER zhZy^*W7&lV7W`=f>-yZpoT9RtWPHbt7Y&Zbl^VoLdl>G4oy&*o zeOcO-MC9DCF7&dqb*|X^Gv9F>zSlrr{;b8uo+k5&bUxdA_oK3l{-KeaWMjezPle#m zFw@s9x+YvYaj0)@CFd{(Izxo|KBcx=DFJ5GTKydGEZ^20N}IW}5z0utF0 zQ|AxEb>!p7=D6*?G9Bfrg+v70aW#h@KL?{{&6?*lHT+)4uQe6jD=6LCx# z%Zsao$l0vdEV|%q6H6(I>6lwigdcJcgCo1wv zD&8KVD@2p9nYAO?j_7Ee+!ag^J+d-Gqn|Dg9rYeAXUrvBK|w3i&Advv<4Jc-qXW<5 z7v-d(;R}%Fh8G%c2qF{|O~!-2Uov2M#1czNpjvy~{&KNv+ujItID4Z=Pj5lt6#nh^ zPc08Lt0voB9LT|Hmt^(#t>M+_LP9zppR+^qx{CuQdYYG=krGKYU6`N1SiG^Cd2jV6 z@yc*XkW0h!nP>nmVrmFXB$kz%V6F4)5?ugFV+Gv1vVnJ@gKl?TJrpe45ooAnJ$2*? zc6O!<4jz>Q<7R7{#rIHM+s>)?QSuJ2WavcsQkq!qIKPbVIC2rC0wdU)lFGUYn8pf= zp>7xfYb)>#Ny7~ELNYYjXu&N6R(+3ZBqb~L=>9QrkitnB;ptxBmf!7{mPmzhhQ zQwQ?DH7yE%Hq`9qpisd&VqkzVI)(SMCUc3y{KXLS7qVM(5)otj^Vtg|zH;AQ9tQTtE1lA43nJr3}vZqqvk zRDI5#pYgzv&52-bPGt8jkC?vW*quZE^VXGycZ@^7Tp7;xXkI(q9qE%NkJbXAuuaCK zvQWf?KbU4TKSM0%bz(vd)S8)zArM`1rfzYG!e5>t_o=-olGg10BZJF~@SF$kpt-$@ zV(M|yx@IzVEJN~x%W!-O)!~`XH`D_p&4QJ1lox#^f8R{Ul4awO;HsRCF19WzZj7z( zJ$Dv9-x-g8_Qv8(HVLP$z+?mV6~@EEU+p^I>WpRi*Q#nEwA{o!7-UHh{KCP%h9>W? zwcYLn7%!km%@_(FD7zmqrdeEFbKR{6;!wcW-q-*a9E@po4g;0zO{#NB}(FwJagzvID9FHdZ> z^vW6aIB5PvOvDNyy1A)P3k!!6)MjpY4XMjp9`LXf1Du^?|!q{JGXEbSXsK zTIYmtnNs>HZC`$VV~#+4w>!IqQq`k#p)7n-1DVHbPNn+4iKMm^f{=oaUy9ERzS!asK)tFIt6{^Tp7{4C|{((ONb$uHar>C!$n(F&5HE++l;?iYT za?|CTPM#MD3)h`(qwtU&Qj5yPq{$p_F)`eo;VN3aDY-|gqKZQ6X5mZuH6obnx8}Wgj8xo|h4RmHl zFGVj24!LoFC=t0IWeEewCIB~0Om*w+mNSu9L#9e?W>*}RqTN{% z)$V=Vv`&xI$1@rxrHYGd`dZTCCI7XQS&TB8)>aA}*8Q+$`=+`Z)gzlYH70ZNZr)NY zVj<`@Z&YO(lbxW6&cEV53(s<4b1Y(k6235o^g@Hgd z8`GNBq>nbg`_}K8Wzj^uI=tQyla@3%SI)3=5Zd2;qOyqe8vL8bJ&Sy`cVX1p&HnC% z6xRz4!s+!?zK~jzWReQBJt;az#Exq37pVboJYEA4T$Ame(9+U?2v}N1A&r#DlUd%T zo1_d)ZL{ryxy)5mRG0WLRZ^_oQdRJ60|gqTV&``nXcB@#HrR7)qgSn_=Dn;#^logJ z=?9#N%W-`Y2UP$i)P$_ZNAP+w|Q6CT8fY*o|yMInaI2YKaZe&lVgTsn-&OKCHG zp#jjctuq1%CP|dz9p6!1eV1K={=)uO#mssgAsdEqDL)Ik!&^UHezUy9F)pZU<@2xY_U{zF}*GN-iNkwI|WogYC+t49<531K7oH3yP-BLx)V##0QMb5tf3`^y@NsuDZ+@1pveO-3iF%am@T zl;UK>l9|!9pC9jk`e+2XXccXK=wznjv|_iFR8NDRH*W0r%UHW1rZF!yt3EnR@wiy$ z*TaWZCv8o>-%nm>MICcU#JzRutYD{pl zxmXm>h2BTnZb+jab~$mwd`zN&l>P+LjSrG$X4%~a4J<}m^} zcRt&_)z>j=nSw$jBWuH2FW4D(r^YoY%;;m-(uM_^Sg*Yfstb}N4qhTX_4PyF z|0xi0k~VA08cB24AmUc~&{yuGy%b12az5|KvD_D|e4f1E-gQowD%iU^y_H|C4%R21 zTt8gqY~@%PThAZ;w%+Hvd@mdu?;qAwVToaMkfrdUQ;8x|&ZhHj>Ds2$czCYmAh;5G zhOyrdnNS{BWGkQbc)C0u(04x;hF8wK;{EXp1APvz*cufK{`t}bn7Or3UVg0`g|9&o zDP=qIDa<*IH%ou-{sq0 z*3VqVex-T+@-rot@XY5gRsQPpFkzC}Revd}&G$-_o_8^#mK5jVcQyBx#7WPfz*l_2 z=@ogV*6V$FaM^>-+4)sTLT&Su&n;~pc&P>xFX!u_iEdlG^h2Ed*2u!u9j)UJQc3U@!!zSC%>Qb;A7?r(HK887Vo+)!4b;XXFg8%qly%BMcpX_JOPhZG&AylXS4h@!6&D$qxZm=p@$Zi8 z@AYS!NzwR?O{la359S2Wz`yyd!bK|xcIgjHvLLE=+2$2rpHc#YrVUCE1 z0HydN5R3*WdQG4TZ3CSGA0HnW?g@iCK0+7MKKuoh_Y+{B#~~mP0YSKUf8b7% zu1$V=W=!&}90)i79~CgIZ)V491Hst;$qlqK-BSZ%mQUe66>Yb``FTx{CP2Z&%&n=3 zYrWfe`*&(8X0lvJ7$^+jYyFt7hy$W7Mn<$xt|(w#Sq17iIJM=qwSeV)a4Gv9@tt!c zC@y>k2)Q41J!TM7Fuq}g3q>35=TCoB6JoJAY1NnA;6Us|`#5=wP-0cQ8MZHM*olEa z)4v;bZGTCH*o`Jc*OzDhdQDJx3Crx;O5p;i3jWnPlfsz zcQtlH&?P=(f2p*4e6c%+S*f?g7`Nf|*+2s~#3K(22aQ=Tacn&^|5&GI2d<*xaI)I#8r59e3n`!x8q$I{vox zjx`gM1Pxh7OLYXby|0acv?2{m_aHj30yr9-8}_hAz=;OT5~!=I4UuA8q!@9`T2C?$ zH&6mVl508DWpM>q60<=-;K`~9RQ6Lq1AwyyQALnCAaA+9(6DZ~Hs0OaOXPE71;MJpRN~|uu~(~ygjn7|8Da> ze^aawSp|ylL_NG2bs4vnWvQm9^!UpX$@&PGbjp@KHUAmoRlk);+s7l(JgZ`3hhrX? zUG>PLof1ysNelMMo~CbI*7{v(BOc`F4voFM6=Xejw-6Oh6j%@70s4_poCp zKd=-{##hjT?cPsSm5|8Dl-(tjvDJU|s;!EN#6jHd@|3<~qg`G-)J}yX=Z;S^2g1LQ zDl>R{p~tHj$l^hN5#(Nkj}MN%Bjr$l-Fm?xB`iE0$+29c&O(T<$GnI+Jp77nZsmnk zql?~b%-X`~t>YYeEy;i%TtbD5K4Wi>Q8}qfUGBr=iM?%O87bek__&;lg)nzblKJ56 zr2!*jyQ1RP0Yf}8$OlTUa%#8mrvM1Z1<^T438Rs40Ex~RAPmxsR)vLy8Db@#JpVwA z2k?uW?CiiNGl$Oo?vo{8cXt=Wg#kJy^6pNiIXgTY?J2(tTtj?#QT89CK)Vx#tK#5 zJ~`w;7RIIZmJIm$HZgs!;D8DT3@a#MI{I9i&Miz2Daovdl%1UZwnFT!M6UFO7jKSH z8|jd8V`AC;s}epgEG`Fqj?Af8T;n<{So}R<$N9zUZ>Drjv-ulwGS~^3_<&M?lCAYwmU$r&9m?vV)xVx;Jw9xYA+4HQ^r%ndW9Np1by(Hvfe|5o zBDBQkg>_@kHQ2d`$mQVEI1_eyo6wh_ps^MM-X4p91bh20B40B}*ol_iUM%+a6xYHWc0D6~l?Z_aw}!llUC zzWMEJr*^{WDa+=*2pM4*BNdKHk8()d{cYRI2bV5N#~rwG&c6n{nhvuE#`E=X!n%|V zZ9;$O&bxn9lGIikbmeM7a$ImO3M6K0t%UU6Wk|~$#}z|Dgo()^bS&6b&_z>^OOYJh zN}gwa8BF{#XB1&pU!3;ElarD{LAO<%R)^priX>nfwH3?_ZjiV*f)pA0Deb)(gPM$t z-@Fz1Ul^tunLC^OH^wP zn?{`K!xXntrkv@u`&27~^>i2sVN1b>cCXCltq#aI!}C7~Zl87M_O48Oo?+CwdvCKD zh_JC3NMLsS&=N%4<{db{M9FG%C2AaZo}81`b}g-BrAb87nuW1>oyNn0Jziq@E#yFo zIzBTrLU;u_s-O@Q=pj1nXlB;SbAwmk=F7;4D(b}_iZ!CFySv!edrmIRQ{O6h67?lz zXsGvIRsbDpX@15fYi-Nn;Xn62Bt*5p|IhgW5-WF7)*_`i!?R~!goR-#ox)vtAmm+D zF0!?r=N-Y+XN(eD4~E$CyDIaPyFn(Kgapr|f$uP8pYTfegd$NQhiC?Bzx z&EAR^i^PBT%igD)RUBcjq)}OR<{34?5Z+C=QGtgiHzB-MvzcSSLS{A)l|PP=5%TuG zN~o*j>V}XFfDrQ25Cj_c+1?bUuXeNh@h~scm8Woxrzd^0nCl}FJ}?4+@J)VUA@Ghr ziyshnbL0N_@grCv(TMAVAQj)^-6`mJfB^wGY+$|yxqI^gtGuX$1S(w&O5mrDAX`&* zMH>`3i)lMz znVd--JCnu47MD$P2m0>LW#0*$JJV^gAW&4lB|)9~GOD>hG^Gzs`NZzL?Q?w#@8Gft zwdLY}tFInAe7j&<&zq}0bWy|XR7IXkY+O~fQi|RJ*zy=OfxnV*H=Lbyu=BTHK8zVv zQ;j>JwtKt;egpf)X~hc2 zOSw#$ftfJ|r!$m#fBe8Oab)pNnSZgj(%UQiF~uR2QP;j^%F0jLq~E zu9KMUAbXPW?g)mpc%`(|_FRnhp|-6Izu;CwFuu|E(&J@o25MVnG?n1_7IfQ7L=rf@ zvQgM^nNH=Hw%e@$lkj)ma*EP$tF+tu81SV43@Aj@On- zT`$OQBd9sfed3I>?)OowPL7_&@tT*T|8nUd)u{LW4m1jxJ{ft=W>E5;m?+} zw)Q21oHvSCbV|_`izTB*N4eV$vez?*77wEOtlzR^odHvP?yK?T;fbDQr}&;1yCKJW z(#C_;TEm5SjA=Uj&*!6-)BFE2`MC7Wd?Cm3%~I5#t%s`}2pn8m;=SLknPZ8^Gbk)T7c{)MplDNIoz{{B2uLv=F9CY|MmQ63dF%i&@m6(tsU zqF`Dz3ljB0L;5`=Q`D}e#(y9%^O(Ut0M^Np6pTv^E;iwFHB^}BrzxeSLio4=U?8$^ zBaW625ukwwr%+w-47?E1EkZgZy=ZoYtH*0kBq{`Vv1=|xMjbM{*e6Cdel}YLn_%xu zjfwUwkkmv0mo*#5YSvewCOJz!GZfNRXMhwMg_Uw(C1%e(+mfb6ZDPSRSs+1LU7c`Z z&p)E>C`CxGhEE=3H^r99-Tx7L#(q3NtApBOH&~UA$iN+I6my8`h7ozRuy{<9nj4KnLso|!x zf9FdiM3vZFnl&^Q`q5)|lqq+>ugkhybioPFx~*Z0Xw>7GSLPVYOgR0-hej+e4KndH z$N@Rhh6%_m+a-qgdU^e%N5PDLZlXbAuj2(ax?D_j~;7Ef&NFiwP`Q$0Q3jCrV zM`Apja;-BHqww>K<9HUI)mydbrsHUTNs83nJ5XkhbuE;NPLIPyA-5_|=lQPHg2cLk z0R5cS3}*_L3s>6}o+Tf!zfWaNlZ|uT$Nt)gbse!ot;JrF9*u&1{+1XNFjJ$Z+C;(qb*eSFy>8M zK_=k;ngL$Y2*2Rl(PMrG-K;bv7V>Z=wHp}JLkRGYy+64RE<41jD39eywlx1OFJJwM zeLx2WA9=%HDDcnxK7g0Qn*^MJ>`Q|%8?uaW0+s_IGQ1$1Rd9FN2g zLOip+Ik*v!|2Yt;_`iA29#_Bf{FrGR`=(px4Fbt({jocQa9n|ASXSxQPG!Ostz?C={X#=ARJs5CmhF)K3&o%hYMjD+8KHRecY?IOgciE|JE-9`$~VE7Mp8>8pg56dU81YfWlZI1aJ}-| z9M7J1?RH*7;`1Z(<(7S;YVK!Ox{9{jHp+A;bcRx&7xE> z>kB1bm%;U#Q(MZDc;0>;Mq5EGE*W1KR1+VGMKqqbZVLwf?S-|RZbeNUiyzch@hE+C zozn-wv;&CWj@rJaoQ8eL`&IL&r&%UTO2fw|1h|xhyXb-m_@7XLne%QROvok19 zRMoh%*`38;vzmS#)T!B_k(}OR$>wzMnU;9%X5Rl($?7CiPNveXYRsh##@_=2_esmc z7bhh41vObl|bIXoWX3Xl#YyXG>htQs@4q-3Owqc8PI%_{rLym4!OC)ck?ROM%?B%n21%%nX$ zbf1e&k@DG>IU$*q&Y_GYeK*G*224xA!Vviwou0|;sSGBf;8p8^c7`JIiK>&6G=8qn zr7PV*p_}aMl?aygw@pGgsNqBlExl$GTgl^_&o@1+ukC1*gA=jyr?7WP#6>&_2!ca6 zB%e2T+~_)~=9wP7#_KPfAIj5i-R9_bLkpB@L*J>z*88TXyN_il^L*-}IRtA7dF)qd zMo#tq534_dbOBluB=4MFtIx_`@T*+B2%9@FHX7A0k!=j5^kQhc`BJj?_nmgN4guyrjfKwGk{*GOFCb`(9ew74P!JGtfeyj}rAb@pA|tl%d${ zN#<@=9SXfhs3qYfJ#`N;f9^Z=_^{twZCvfaHK!}tzi$)3u1Zk<17e+K&%V2GnMc$7 zlsC1l*Q6h+?3?x-I5?3Zf%~t8*YN~VgI1=>t$V+UDNNJ3O23k?Nmrw0j;`YB(7MtA z9o@UM2%~{S{u|-hVk^Ez`ykHJR{`YhDtlqtR!2OE67{G$)v)3xo#FjP_BJGGMd-ia zaKxUIbU!3LTm9rNH>ubOhaLIH+zgaWPr4&V9{*N=$)ip4fAx-FAQD?tZ2*_N)cOjy z^~K3M7tCZok$i)`3!i1@#)d2?O8i{c*R#HP&n_)R4pKw4L!3$clJ#!C7}-Mdha}3^ z%9WRuB%E*JME;^qh!5}+3z!T3mTs&@7mN^uIfzrH5f2i{=l^cvrS69LjjXe9FD=8x zl~M1;wEd3Ct|9eqDQ_5m4Yq+2QbqcSX9y)%q57k8>8RyvwZJ~}^<7ul`2reo(7{qq zJw)g>_vqE|TB+_EuY5*@k0%C$lkKR&)U=qlcprk6Xk}OX#k?j=lDfu>mg=+t4_L^6 z--|frvd_C26~@fX_K!6yLCIm@V`&*4y961!RrP-U%-01YL8BH)m$$~C;uR%s?;eVv>c%{O^c!MLYWF*PYC3W2kKwuI7@?DLrMXdX7K&eihZMP<3iEwEiKgQ;g;LWdbpNjYb8#I)C!8G#g*e_ z?w~&7Lj!G<->k3eQFdU%N6#ko5`4MuWjCwA7409Ec8`R4(vJky`Qub%W3E5gJZ{&x zKw4B_xT%u{Wl5bdHvkWrnOQVuS>jPd_fGcPBwpU9H>QSRe4_@dz>(rRbf4Qpxt8hb zZ`dK6@-vRR@d10|)|o|S6h05eJU(jY9t9c$^*lzFwT>#EF}DK9POoGiLYaF?CCH_} z>b#aMb&YB*y5V0U@M?REaEFckNxeb1lU5pfOe7j<{HeyPaU87_jLKdWq8)r zWrpKoYQt{p57Kb{!Eg=wYiC^N+~%I?5d+`>2aFO=Bdu1;|AYoHc5Tv;!v43eL=BaC7qd+2Ci#Em4q z-&0$mLy-y0Y)ShN@Q9#Ro6`O%u1LKv7LIMY%7d_LW5cu6h)uSMBRwcb*Db0k&L*<0Wh3JUzywVn%C0(cvF5)VE_Dx@J(RIP3u zH%KT-!b;iN*Vc_3o8rrXJ|44vT5 z?w^`;qM3gm_9-v|i!8`~*iR5gTBm(89+yMKIM_(O!%SqiO>#lF142930LPc!*gReW zlvLZQoozY);pMKpuKC^`-lbnP_gMI%n5+zki~{pFJQ%qFkuFVsqzH1bcKcjcaFUna zowdR`c4gLr--A@oUg$`ehxL{&3afdc=OoHH$FudFySC`iK8tw}^?`+U;2d5s3SG<8+xR65!yxl~gt`x+V) z@cD)QvD}_ry;jp{2dTdo)fM|K*(AZ+o()@ElKDc7M(;`!7Fu+-zwAobha}RzvRL)8 zGoCejT9XGlA`TvGEPg2TcQQpxntk*$HuCmaFo{w!S{~?X%_49q@6vZSQ91T?gbVWn zWh7EVP6B)L@ zeP>USnm<13=oA)ad6f0p4Bod4l1h_OhZ-)rU2vmHNKDtbV8Xn2avHoFIF%x03(9^@ zs9&S*cIgo5DK75DU3rP3R(D;75lv2Vd(3XN?|4s5 zK}&77zM^QlJbICql;VoCqJhhbH?e7Zi_i8AMXD|f zs#JPm@Oca!-c+cLc8z@Go6-U~M_iGA}Os-N?V}Do1PHk;=wibJ(+k zRtr_K2N=9y(g~NQbX{8FlftB5sz2GgC59nwusADfT3KT&Md*0{5IfIj%UGN97;1AO zxcuRu#rl$q>e^k=9^K$piiVYPGs`_q(8!@r9TgM0GSxw0VA(2e$y1h7X~QjPrO0Vb zV3ia}BYx-Hsi3)J!wR)|FJkp#=31YrW#IdV zbgUe-WbxKKzxcc6ek0VoYCnbzMreVpZ~3bju`uG#pFiNSd_0yKND}^L126DG=hrg> z?s@GUX_9r^;fYrUyzC!D$4pDQ3^`XFxy$Q|{?<;e7P7oMC|F{x7`bBJxXki$5BD!< zMhkt>_Ip|iZ5AeoPFqO-i%)35Nwb;AdE$q!FO#y$TC%>PWz9_gJs`h#`Y0A14x{zX zJn-U2Qch3hPe<;x+oez7ub2BZ*OfyTQmIu;@*~{y%EM1Ksk(EeKb0O+GuIKW#XxoU z{LY`g5&HC4tcA*Dd1~eghg?h_K|%fYj^=c)Ds>1uJ8684Li#&a8oc;{uAkJRz03@{ zVvp=lZt-X_S?MnGN|x9BsXZoxx|^pX3ffvjXW}ugrn~I=R8$GKM-*;53ofp!=Tl;m z68abXt@^9gQ_h73>DtX-Uh(FB99NJxHG?+%?$)m?Z!C)vz@>BKe%R}asWXhptX^5gH~}T6 z%g0lx#T@2g`NV}C?J)z5-HUYaIjA1bJ)VOCkK4=m0a@PS3G?%ZrN6WOB;SzHX$4qu z!iHvPt&F76SrgF;hr06yf6nt<@JKK+s-CVz&fl)%dOj{vt=kiq-e22k-?Yx){fJ{d zFBc6#Mt{lkx=B*|Tv}^MmC4+kC}H;ec~R6r{YsL>)lsQKQ_l+x^*?zN?Y;g3IO3Ds zAr})Rm~wsWgLOA{&%8b{>1SbKED&Mdp^(u0!c)iZchr_WatNWwl%;+?rjZ=05Y%s+}^a^5XOnj^LpV(~}+L zeBL3Xr~lD&wLA!Fn=~R1hus`MSRU;m<<=1Y`Vpy`t%8zo#;wWg#*Q)lr~eA zVpf`tp!tZ(zCK0xZA+(@EPtQQq9-o62mdD97=LN?*2)=&EdkpuM8>~0xk%wAH8Wiv zxGu#8<@>(*Yhz+^(m_s}rZ(`tkaTTXZ-Cz&OzF$}nfP=`(~uvD45L$mTk2xnYCXpe z?m8bX%S>-Iz4_`;!#X<8^Igg^-QP%e2gPhAlXHIkHOtRemmn~?DL!j-f zEz(Zu#Po&qIbZYY$1_GaoH3O5(mmM=?X5Mh*LU#QqF#=2dSZ1?8vC;KZ{<=ew$|T> zFD_l6GChy~V_32k+KU}7)+{rvF@2lmIR1Sf>h-(4xgT!Hqu*xC zY1u)d!Y+4QT+4vk4-w9MqHn|UMN$&-(JAkaV-rap@2qd>FjA_r$H&^8K2Qn4O02L_lYfW?zFg%kq`q{D&t;0eM0KTt#qz-?*CZseHlU41K0jpXf zP!^bs%$j(s z-#fnBzqx3{yVF9+e!R!4qN$wYfPY!P?lSgm$m%zj4?1N z;&$rGl6M07t#bKmDD{iEBr!DU9XW&X!>ZFribs*9UNmUr-0t05yZU+fJ)vvk5&c09 zY9-eQj`u-*9z8A& zPPb{A0q5cg1p34Y{VXc_gc`lrKi)p8uBs{n-`Jor8>py(81o4rb61*;)2XYgBctpv zd#cIFwE@IkAJ}lB8{A?~_!Y2u57HCa5x_f4z&;RCsXVcpo5sLd@C2j;J85tM<_Zl! zK|K-601OWkNH+kesN-}0-pwtIpABr}@&rl;H#_v@VNidK4BKTVjblogoL58T2Yz6GOH~RPxdmp7TGD438SZaA zFl{!z1Q&_OIWd2nMYfb7nPZxg8+ZJ+CvQ#toBo@PeH>WNxawX}&kNpRn`;!#Xzq`` zD7N5l&uv^ZR4p9^%T_9a#t?iD0ciOlm^?I5&)JdILS3C45JW2JOKK~QVRWF^zI(Ti z(Myq@aRKPGmh+dz?;3z}$Hvi)CRa8cqRC9p!tz}ZY#pGLGneMNiUOQ|Jpc_1Yiezs zQ&12Ja`Nde2V6mb#tH0P0Mfe*#FouI`tk6T0n>=pbj#Oo-K?w{U%8iJTUx!teI-BEUhm)Rz!OBe^5TyDJMZ705j!#3W%ovaLJ>}3 z``mjL=8he<6Om4C&bv4HvRXVw98J1SbYq~dO1wz04zI`THR*N;iWiiMk&-~r3TEwQ zY4B#u=IaW=vo^Q2D*Btq2y$`<<^^j`fQmuj$<2fX=0^bHpdWmK!Cc+ASN(kP;>FWO z4ozDSmsJRQ*xtE2jE!ebo9+=$vPkCWsgSMaYY}r02-nac0s9^Sm7T?8nDl9zgC`6t z8z7K^xP23Kq=~$X-v?W}QA5k$8_vLzpU*;=h1s?HZru8Kp9b%c#G`%hR@k^~=eG+@ zU~a~bLSiD`A5L9N+hpHE7tCmRC?O3s)MC+}eM=k|Wi$VroR|2>0d#c~# zNHAHh9;is2e1or@Iv#}}kXoN}6(q7`CMK|Cdt`f4$q{BiUr#O3MFBt z3?A`CD{{G*Bf4>IYys(q%_uat!@}B{?ub4N6S9?HfSi_p2G}}1x7Sx!odz3Z$=cBT zI|C0YPO{v-sp)OCmeRvNvm^jo2HJG%{ejIB!|I7bU9`sx^g3qGzuvyd&KAj>y)6r4 zp)`Ge82FEi>7S=S@skDxYlpJed%u)?Yf7qH{wz_mZ=@qFpjN(?K}|0H=>&0vS4(EI z)W`ogzm{z$^wm|K*UXo?pwLZyn-+q`uG`jfA&TK8`h-R{pWu$2#O}!g$Hj+{jl&;? zY;%pMQyP)uKiJe~kERfx(*q4Jh0~CqI~ec@0h9Os$L#lzkdUnG>~i3S1mEt{W(EL` zU^G#nM1P@)AIb~?j1cN(pYJ^fV)i_MC5b~qGVlau1r2ScOb_m4x036~8 zE%%#nLoEIjfl$z~S4TbMjtmm2@he`5YC^=9RXj z$hxhfJ^qTf+-IatTrw=#C|L$jEN`Cu;HLEoMk!+B2l+vR@Mg{!w2arPZh^Tb&f3s) zkVwxJ+}KR9^;Cq2Qe&i74%AZOBPeDwp4=RUYPIy#FU zP=0Oq9oi?@JheDZ44w2Upf8<3xSj#{b09#r95*iAV_5Yt&OJIUfYx-qa`E!=xbMQn z)%Y4M#hSkP*$oS=MYoxbkMN+aeWWEV$29d(GWPovp<<*EOqtz!ow5JE+oAmgI+)Oh z#H-V0Qkq88x@g$#xL~i4{pI*>S8X{6{!uYU`GLyeNQqt~nrjUD7BQ`gY2 ztJl1`eYBy`2XhTM#@NNH0k#z%t;;Y!Njb2%I((XmNpny$*Wxzc+?mcM9nhsPi`JgB zOkcyY1bt@p&=F70#t*pod($Kn4;Qu&9@${=Sfjh(5Wdat*CMx*VA&mGzJCAqn!CZ@ zKMWJph{DJN0*2{ij(py5Jviu-1gbWCu-(a2xK5cmk)b_gidoOy`0Ow0ahNM(7!T3R zY0^y<1LsZ56a6GVUqSy@y<9+%y#UDFkSy?@CPr2dnt+L$5p4txIwKbHLvHV9-2W)m z!-zYe-8qFBW2Ji#A~1hm7CcmPH63m-oBbI~k83PyG;{wg>2*_Gxu zrKWgH{fUc>z<(s8f9c=!|L{r2pz5k931J9PE0U-5;`W1 z4w1@*`>n1N;x@$`H87f$g&Y9d?P(~{llUKBK_Wij(}F~U#yRh6{fBaPs=eGXGKXTFk%AJF3j+z@vP4k ztdl0Gw?WTp#mu|I{)-<=e|!P)_vuwO>taP48|~}=xxTi{wtqR7i%NS;{!kjec+($+ z#lEwndI3Gn8O_4{OqT9T^$rhZl%kiC`K3gBTTcWU)ckd$<9 z(#FQ}W%kk?iM6Y@ReKGR3v%!X*zep}3wn_?jd3S`QJo0|QI79?frrl+s(U7>opvej zB!OCxXS)6XYwAwFR#XVCr8CyKFDyexd(`#K3Y+1#eRXQ@Ss%^kA&dFPXUlezgE9ar6XIVx75wfnrhWQGi3eS*LS7Kf~=y! zD~2o1dTRbbN{{0?Z%(m^Sw6KMaE2JJnutn>yP>dKMTHo?%_q&O~(7~a3O%B z3zwc4jDuqKvhn*hb8Sv{{TBH>uQwhZ>WXUC4u|N%!KgOO^xu@|R2B7oqLhl}HWfj>lN`F?^w&0?-05IFcg z()~n>{4iRsD|)yUOvQlg;N3E{VmVjmcVRUrqt%+AS_Hho#RMY`H9n8DMuMDMDwwCX z11}*pQ!a5!KYPsnC8_y0|65P{cij_tIOxBrrQrtgBZ*1ix2*N(EjEYcj0k2QXGTUL zz-LHG@)qxHczbX6g#UCpXH06j^WQ9O`ONG3u3$TXe0*+i&+PVMj(p@AjoiPoB`p(d zBQ(C1zG7pY;(hjZ-kDcGC^$8UnmB-mJF#0nfgWQ39K=A_J- zDB_tHGJ=E?t95mr-QX>8*FeetAzu{|f$WlbiIO7Z_? zz#=3ghduII^LOFnO;kg7<{2ccLv(NSP@~)q&L`!Pli;mRP@g3ow*YyyMA!El_s!i+27moB<@zJ|kt3c&G<+TWF(wX6%HPX99S&R3sp+y3pPs>bdry;L zJiRSAN2W_OH}h~?j)3|4Yc64vj11Vrq`Vyd`c|iGMBG4f0O2-8OoBFA)4N86I$u$& zB1U$V3qmez{f_dIE#((Ee`|*%s&IT4d#)C5{oPkLZH5tH*K~p0)RzCR3Y8m2E!lK$ z^nUHM;tkoGZURuj1De=f-6Jp1D5_MG)YPt6l!lPr%}ISFrn=TW^+fFPNV(a~L2a2o z7hrlG_hr;JN=)drfH^;NZJ3L9f>4<(e7bRK$L#7x9jUc`fXB;wn&Is%vD!w321`6HuROQv6p~e3$QyF+r0JMKb`fGXIix$U&H~%yQ zk(dyF2$6VZUnd!+pp>Q}-s$6+iFfa?aW4S0oXc#cnxtoDWPP>rxPH#mcBITU_(cGO!L;Z()04E|_p+c4^jHQHR%}#dNqY|=YWJ&gY$&!7E zLUvKI)ZiCc#+F@{?E5as5+=sJ+-Lfod+xdC-231CwTj8gn9jc6gX9=TR1SV4$YhZ(cFqEgKmnH0n*9cAh|BuU5 z$0r2Z({8~c&P)OUSjwo12tu0MmDiRGSO2Y8^*pwl8N|gpE3WEyGD5h~TkFn;2WOrR z(ba2A#r^&`T^FB9s<|+<^$4qROv;=$Is6-;jC>TUhBmXy42Msz|8p0YRLj6qz6a{F zvr>m%yB1NuMZ+~nhg`OKx!POJ1xvo{P7jo^pvHNVJvoh+3|R7*Q{;X=}aoC(!zy*8Yh_BKZw3U5rS1Pv2C_8?y%&icEt1&&6Md%f+3#1-gcypvtv^ zLO?!L*R<%=U_YK%b?%GfFwK(<3)m&@%n*rQ?Kk3PqlPi_|EyvK;>@PzE%Z3!=mf*U zo^zWA&Lt-bM?y1{k5H|`=@zGon!Z$#Hm*l%d|V<)3Hw8a zKEfoq#<+({+n1)_`$X$PKT*B1WqlUaFDG=C4S!I!(v2G;=YvF^zYQOL$uN+aUEuR9 zMaP$u+ANIo>PP;otVGr#BCZ%^e`D%+B)cqql;K-TW2}??noRWW4DyuA*NN8x$wAS3 zcSRH2F>be)oLYA3UckR+PUP)qF|DZ|sJ8$|WS(@Qua_?eI$nfQmTwK*SMqeGneXR( zJG@InKM{#-cQ3}(d*OFfU)9M*@~J!I(+rm!u{^KKyeu#~JM~@KkXKpUV8*LY$@3(Z zlB{{b$?;bk%|8_641IOZav@07cOP=i%SIUzGrH#iblluqyjp}t?Y~o%6mn%0prPsX z-Hol@T9c5(?%TeD&!-0&j|4y)zzmjX6`AC{R$E`(dVRrg48vDkGGYgZ<=yvSGUJ#N zuRo9N8HLpt3>`*i3vsyPBE7xh+9$%5%3u1-t&w*wcVUBW$yI5FDty{#N~@aWi*L}a zWW}AOv#Qg?l)WIFeK7IbkL#@;%?JI^OXWTcc;6$+ zj7s_9bchR>`hKl4#WeGb;T>Lu%ZuX`6MQkH`sO{Z2+8BBR|`2h1=xOKwxl0Zej4w4 zW}GUY2nbua-uH0YBQjo2pnh`=svf+|s$VTdQXEMf9SjNw5B&9PDeSMX3BBHJQ@Ji; zn^c-0EZp|^=0_2xoSUIeD2>cGhw^1{CZReCjc=I!89c zp?QxPQAS5%0n)6m2k17of6~`1T5{bVLAj5$hh1*jcwNG5k2Z&4#HmTiB(9=Ne?!+Z z10g++?SDCa>@`v@eLL)UQEF4s72k6<)UCf`KT&$0QHQ6hrL!G*DWK{GYzV9iz(Dxe zo(fkFa*(@>p;WHgp&v74fl9^tSIKIR9LyD$!>2c+q5mJ%u+Nb;S!t8nG)RVU zc=tAdf3Z&Ku?jb*^J1!{hr^9&*u%#Eou8M~9tVe{pfhJq2#UOsjL(zp&;ok)5c_im zKPUgFmT#Uvm~PDe?YxJbxpw{R`QZ;!Ut^ZbVBk$N<(bz6b%f2%#z>!a@Ii}dNopnk zN}T=D+-=&u+zqK~hH4d}wqJHUj2vjob0=HV)=~3CRJntFO-GFgcJV7`lg2$!M_Qc> zCgZ!r{iHH2C*|%%B{~T!r&>>JKUHdlPEjoM$#?V^suAj#lDay#LGb@O98rMX6`gDq zArtc`s;|79Y`tDz9irs5+h_!)!qBql^k(j=axhSb#rRi~wy)ahB2FnnV9P5J%X+Mwms z#WU0q3T++Vma!G+mBXPSB?B*Ux71J5-yLde(mTx>_kYKT2239=Vk;&p(z;Wt?)YyX zIq9WyVYfvBNzct?NV9bH?}!heBsG7H=xm|+Ru!8^s-jDdKKD!TBftF?$B4ooH2f$i zu=RS1L^Rkh9aP6I=>+yhQaYndN+{OV8cMF{NPWA}n$WL*DL2Ocmv8Q4fjdFn4ieVe zF4vdK%G(v@X+EY1mkprq#L|YDAbqJ@2QIDETRL0leDY1~GTm{mL~oqFo^tWSpsPl! z3#8)$EO!NW#Ff8}@I>0$*zCe?bme@E1cArW`y_}U=f}^L^$JBp@aZP(=Q|D?yO%)x z?%3GaE=Z|(!wL^4<>Ul`L9@BPQuG<}hwtjY2M|J02Op9w;l73x6-~lV{zD!xFwBh* z+k0?m3L29+WFW(kW_)^j^z`~7L=Su@ER1|;U&&D>1u@<*>4~2%&*3IFDWca;KpZgn z-L4JaR52;^4LvJxlRtJ&;PksnBVRw9kVfOY+m5H^=u?piUt+g{f;mS_38neR+>RyY z4IlmILP->bgI@hfOI?Y|x~}2^gk1~rH4P)Wiuxrn3;{nK%$LQ-ip~DKsB_VKX44WM z=f|=q>Mz5O=8S#p?mH=@H?5`LXy$5yi#}hU{Xp;4P4w=h-d!PmOoPbj(7_i4M$<=1 zdc0CC?~S_zMtRTPRm99%T9k_w+YI~FRE|l;>rUUs)OrUG!iciu(N;e&Pn1B~VAg9X z>f<@o0RUlU60tLd8cALOV6430n?Z8IDSdrtkAl=+Jhum>7)_Wpf_-UxTrXe>__$t} zo^FN=W56=VfL|5B;}ESeEUyz1aQ1{0FTl#e7nZ{*43YA1r>EQX+4-KH!13{f6!@j( z0 zs$T`4EbM5T=}T`;$zu+C1C)^bufR8B|@LB-j9-{uE}8ub(f#JMO3zHyvpXZ zEHqSYbln=!5FMSBAO1awaw?nGD!jb(d4V~T6p6ZKcUA{gKXPIutapk;lPhKpn-}w= zOK5LTKa|MZjBqv=6{StxTETWVDYA{f3nYrKQLR^!S0{AtKVNq0P~{1(aJoX)Gcl27 zbL1e#jHhy*2&suN!z9#n(hfZ7c4MVvv8_R740hvRs30G{V)gx>dXpKTQ8*c+b?@D4g+e7~z&nQ5 zbyIv6RL@9a0_DZ)#v%bVxKH#@C;V_TQ-O_U)q*^p@D6K0j`A6VWLRQ)bfFJz$zyXj zK{|Ga83J^EdA2z7FM2+Q5_=hIK`Z$`!=4*GtVZS2F+XwH?k?1MBWRZuNRB5edE=B z6gnwEsO~6$Ldws~5Kfe9-YyxJ>v!;IJwH+&d%xoW^Le$NmMFQpkr&HOW|#GzBhJh) zh@NduNh7q0GsDS;`JGZN8de9=7AQ^*85x*^#YBUchDS5N(dZH4y=Zp|&gNMx@{eSG zLB#h(3$Wz}1_$38o~3I1g$-eUH6Ke(POg37MaW~?pREXQ%1r(^BNyEAAhZlW8sawH z@+7#`{%8>*+hOkY4_sc(Qs)V)RP!;V z5^J)qVz0g?U%Z=8dP&ebS~2Qmo2Og#V*bvT=r%5wRqii`aYTu!Q&TY^^K|%Vv94GY%Aywry+MgnC|uV7HW`XKk2+rDRqI(@4=Lo?M+#hjZ>+q z9mOZr-ZP7qRy!Fz<_rwIPu6#8FBqNEwpT(%EmwauVm{mHP_byickf!*1^KWQawH-6 zEim9GBqE|~WON6H%HveP%OWW#EcC9e7%v)#q(9$&Q&^*MePHt=`}FA^@3O0wVt*0A*>D0G>1m7TxuchM@UQ;Qcttt~F6x1j{R= zq!h<8k;;B7yEr(1X#f^Io(h`j4JKkDxcggMmzX)~zB5LriNAP1?lA(VzR|^3q!ZHvWWXUnL6e4VAsj_R6lcVsT5;{!{u|nYH+3hAP}h}y{U9^9>Za~-y`U)9(WVkj zRQhv)#(tOd>*aGfo*^_c(-E!%Pwsw*^iY=Qg=t`RWm+*00(BG}cJmXwrsC%>fM!VP zSa-SR^Lff3kJQV&QY_wbtP#zDlPeq>jXO^~8_$nF^lubFQNnqzkdmtX(V)-CS%4}i zY@L4f^oyqPu`u`24^^{8NH6q@-M!7G?ljgncB(F3Tvd%xmBHPiZ;J`N}9&@n1vOHHXK}l3o zDA@bLmx?zMB^ly~Wh>~I%(2|E`5p=Pc{LzaR-!_E zwTarYB|EECppo@Ls_%xiC*O&_U0F6RsZm$Im&8$O$$RnJ#q%jAJb9Y*Vnrnrcgs$k zF8%7^H7KR5tR-hXRt)%&(3vTd3H=Hmbc00Wx zQD$zMu~@Z|jI~LFQKdUW>L6sTC@(Jz&e?o9)(|moxqu6SuT!bb!{W<`|H=kU!a8uV zf2t-B7C^b4SfqD`6`kljr*M^+_4xU9e2Tspe29dWf!ZIgSU5lU~C`y00jJxeIRu*wsCd_d=WdC&;Vx4NBS}> zae>eZhJcHgpx_bAZ0?QxV@c5(d)W#?E5O`R8S41!lrRK(m8yg^njt)Y&;YpC4KlBu z+yX}xdJ|UCc+(>HPI3dDoj{{=b8|`hg&@=dK!tyx{QzE}!1SO1pRPXMUm<`CH1MS1 z@SfNlanT2mOMDMbO`txW89C#)xzfw#2@V&?y-EPpP|#hk7t(4@KtpB=Wn2iTsaZ3JQKzOSfY%Qswp&^o& z90dS!9g~KWMriAC{jjAMdJk zUIa?ynTE}BRaiG( zd^9pN6ats7d8`pGH6>To)|Lla(xj@In!5@sE0f_NsmX=;rHeUcw=&qU{-}PrPv>u! zSc@1C`ZRrowgT-K9g(fFrt+7XVbwJF@-K2h``=ZbCJoKe8t?L}%~wb)z?IQGgMXAN Zdonm~Cc2pNckBf4rK+f@fR;B6{14lNa>W1u From 4a17a845da932609f1c6b7b8a4599bb686a1f440 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 28 Dec 2018 18:20:38 -0700 Subject: [PATCH 15/61] Fix typo in version num Signed-off-by: Daniel Hardman --- text/protocols/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/protocols/README.md b/text/protocols/README.md index 3d5787298..a35ed9346 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -3,7 +3,7 @@ - Start Date: 2018-12-28 - PR: -# HIPE ??00: Protocols +# HIPE 00??: Protocols [summary]: #summary Defines protocols in the context of agent-to-agent interactions, From 933d80125b25d02ce796ce71ad7df7173c55d7bc Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 28 Dec 2018 18:24:08 -0700 Subject: [PATCH 16/61] Fix URI for message family Signed-off-by: Daniel Hardman --- text/protocols/tictactoe-1.0/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/protocols/tictactoe-1.0/README.md b/text/protocols/tictactoe-1.0/README.md index 46a7999c3..8c369d446 100644 --- a/text/protocols/tictactoe-1.0/README.md +++ b/text/protocols/tictactoe-1.0/README.md @@ -105,7 +105,7 @@ family uniquely identified by this DID reference: `did:sov:SLfEi9esrjzybysFxQZbf traditional URI here, such as http://example.com/spec/tictactoe/1.0. If that sort of URI is used, it is best practice for it to reference immutable content, as with a link to specific commit on github: - https://github.com/hyperledger/indy-hipe/blob/41fbe0c00/text/protocols/README.md#messages + https://github.com/hyperledger/indy-hipe/blob/4a17a845/text/protocols/tictactoe-1.0/README.md#messages ##### `move` message From d0cabf42e0febffc67093da21f4b4840f3902081 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 28 Dec 2018 22:01:38 -0700 Subject: [PATCH 17/61] fix minor typo Signed-off-by: Daniel Hardman --- text/protocols/tictactoe-1.0/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/text/protocols/tictactoe-1.0/README.md b/text/protocols/tictactoe-1.0/README.md index 8c369d446..ea9f7feb1 100644 --- a/text/protocols/tictactoe-1.0/README.md +++ b/text/protocols/tictactoe-1.0/README.md @@ -237,8 +237,8 @@ path back to the sender to be useful. A reference implementation of the logic of a game is provided with this HIPE as python 3.x code. See [game.py](game.py). There is also a simple hand-coded AI that can play the game when plugged into an agent (see -[ai.py](ai.py), and a set of unit tests that prove correctness (see -[test_tictactoe.py](test_tictactoe.py). +[ai.py](ai.py)), and a set of unit tests that prove correctness (see +[test_tictactoe.py](test_tictactoe.py)). The game can be played interactively by running `python game.py`. From 7f2df540863c252a565c608ed5fbeafb7580d400 Mon Sep 17 00:00:00 2001 From: Sam Curren Date: Mon, 7 Jan 2019 07:07:25 -0700 Subject: [PATCH 18/61] message family as protocol Signed-off-by: Sam Curren --- text/protocols/README.md | 52 ++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/text/protocols/README.md b/text/protocols/README.md index a35ed9346..ac6195ed9 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -1,12 +1,12 @@ -- Name: protocols +- Name: protocol-message-families - Authors: Daniel Hardman - Start Date: 2018-12-28 - PR: -# HIPE 00??: Protocols +# HIPE 00??: Protocol Message Families [summary]: #summary -Defines protocols in the context of agent-to-agent interactions, +Defines protocol message families in the context of agent-to-agent interactions, and shows how they should be designed and documented. # Motivation @@ -14,10 +14,11 @@ and shows how they should be designed and documented. When we began exploring agent-to-agent interactions, we imagined that interoperability would be achieved by formally defining message families. -We have since learned that, although a message family definition is -highly useful, it is not quite enough. We also need to formally define the -roles in an interaction, the possible states those roles can have, the way -state changes in response to messages, and the errors that may arise. +We have since learned that message family definitions must define more +than simply the attributes that are a part of each message. We also need +to formally define the roles in an interaction, the possible states those roles +can have, the way state changes in response to messages, and the errors +that may arise. In addition, we realized that we need clear examples of how to define all these things, so designs are consistent and robust. @@ -57,17 +58,21 @@ inside the protocol for ordering food at a restaurant. The protocol for reporting an error can occur inside an agent protocol for issuing credentials. +### Message Families + +A Message family is a collection of messages, and serves as the _interface_ of the protocol. Each protocol has a primary message family, and the name of the protocol is the name of the primary message family. For all practical purposes, the primary message family (complete with documentation of the roles, states, events and constraints) _is_ the protocol. + ### Ingredients An agent protocol has the following ingredients: -* _name_ and _version_ +* _primary message family name and version_ * _roles_ * _state_ and _sequencing rules_ * _events that can change state_ -- notably, _messages_ * _constraints that provide trust and incentives_ -### How to define a protocol +### How to define a protocol message family To define a protocol, write a HIPE. The [tictactoe 1.0 protocol]( tictactoe-1.0/README.md) is attached to this HIPE as an example. @@ -81,20 +86,14 @@ The title of the HIPE should include the official name of the protocol and its version. Because protocol names are likely to be used in filenames and URIs, they are conventionally lower-kebab-case, but are compared case-insensitively and ignoring punctuation. -Typically, the name of the protocol and the name of -its associated message family are identical, and so are the versions. +The name of the protocol and the name of +its primary message family are identical, and so are the versions. In the [tictactoe 1.0 example](tictactoe-1.0/README.md), the protocol name and message family name are both "tictactoe", and the protocol version and message family version are both "1.0". -However, these may diverge (e.g., in a case where a protocol -uses the same messages but has new states or new constraints on when -messages can be sent and how they are processed). It is also possible -for a protocol to use more than one message family, as for example -when a protocol uses a generic [`ack`]( https://github.com/hyperledger/indy-hipe/pull/77) -or a [`problem-report`](https://github.com/hyperledger/indy-hipe/pull/65)). -Therefore, the association between a protocol name+version and a -message family name+version is weak, not strong. +It is also possible for a protocol to use more than one message family, as for example +when a protocol uses a generic [`ack`]( https://github.com/hyperledger/indy-hipe/pull/77) or a [`problem-report`](https://github.com/hyperledger/indy-hipe/pull/65)). [Semver](http://semver.org) rules apply in cascading fashion to versions of protocols, message families, and individual message types. Individual @@ -106,18 +105,8 @@ version](https://semver.org/#spec-item-7). Similarly, a message family can add new message types with only a change to the minor version. These are all backwards-compatible changes. -A protocol has a dependency on one or more message families, and should be -versioned accordingly. If it declares a dependency on message family Y -version 1.X, the protocol's version need not change when message family Y -evolves to 1.X+1; this is a backwards-compatible change from the protocol's -perspective, because parties using the protocol can use either Y 1.X or -Y 1.X+1 and remain interoperable. However, if the protocol uses a new -feature introduced in Y version 1.X+1, then this causes the protocol's -own version to be updated. If the usage of the new feature is optional in -the protocol, then the dependency update is a backwards-compatible change, -and the protocol's minor version gets updated. If the usage of the new -feature is required, then [the protocol's major version gets updated]( -https://semver.org/#spec-item-8). +Any change in the expectations of a message family, even if no message attributes +are changed, must result in an [increase of the major version of the primary message family](https://semver.org/#spec-item-8). ##### "Key Concepts" under "Tutorial" @@ -312,4 +301,5 @@ interop. [unresolved]: #unresolved-questions - Should we write a Swagger translator? +- If not swagger, what formal definition format should we use in the future? From a4688b90cbb0f35e64866af2e24e92aff9830f2e Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Wed, 30 Jan 2019 14:14:55 -0700 Subject: [PATCH 19/61] notes about adoption Signed-off-by: Daniel Hardman --- text/protocols/README.md | 65 +++++++++++++++++++++---- text/protocols/adoption.png | Bin 0 -> 27878 bytes text/protocols/tictactoe-1.0/README.md | 11 ++++- 3 files changed, 64 insertions(+), 12 deletions(-) create mode 100644 text/protocols/adoption.png diff --git a/text/protocols/README.md b/text/protocols/README.md index ac6195ed9..618ce3403 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -1,12 +1,12 @@ -- Name: protocol-message-families +- Name: protocols - Authors: Daniel Hardman - Start Date: 2018-12-28 - PR: -# HIPE 00??: Protocol Message Families +# HIPE 00??: Protocols (aka Message Families) [summary]: #summary -Defines protocol message families in the context of agent-to-agent interactions, +Defines protocols or message families in the context of agent-to-agent interactions, and shows how they should be designed and documented. # Motivation @@ -60,19 +60,24 @@ credentials. ### Message Families -A Message family is a collection of messages, and serves as the _interface_ of the protocol. Each protocol has a primary message family, and the name of the protocol is the name of the primary message family. For all practical purposes, the primary message family (complete with documentation of the roles, states, events and constraints) _is_ the protocol. +A Message family is a collection of messages, and serves as the _interface_ +of the protocol. Each protocol has a primary message family, and the name +of the protocol is the name of the primary message family. For all practical +purposes, the primary message family (complete with documentation of the +roles, states, events and constraints) _is_ the protocol. ### Ingredients An agent protocol has the following ingredients: * _primary message family name and version_ +* _adopted messages_ * _roles_ * _state_ and _sequencing rules_ * _events that can change state_ -- notably, _messages_ * _constraints that provide trust and incentives_ -### How to define a protocol message family +### How to define a protocol or message family To define a protocol, write a HIPE. The [tictactoe 1.0 protocol]( tictactoe-1.0/README.md) is attached to this HIPE as an example. @@ -80,10 +85,12 @@ tictactoe-1.0/README.md) is attached to this HIPE as an example. A protocol HIPE conforms to general HIPE patterns, but includes some specific substructure: -##### HIPE title (name and version) +##### "Name and Version" under "Tutorial" -The title of the HIPE should include the official name of the protocol -and its version. Because protocol names are likely to be used in filenames +The first section of a protocol HIPE, under "Tutorial", should be named +"Name and Version". It should specify the official name of the protocol +and its version, including a URI by which the protocol will be known. +Because protocol names are likely to be used in filenames and URIs, they are conventionally lower-kebab-case, but are compared case-insensitively and ignoring punctuation. The name of the protocol and the name of @@ -92,8 +99,10 @@ In the [tictactoe 1.0 example](tictactoe-1.0/README.md), the protocol name and message family name are both "tictactoe", and the protocol version and message family version are both "1.0". -It is also possible for a protocol to use more than one message family, as for example -when a protocol uses a generic [`ack`]( https://github.com/hyperledger/indy-hipe/pull/77) or a [`problem-report`](https://github.com/hyperledger/indy-hipe/pull/65)). +It possible for a protocol to use messages from other message families, +as for example when a protocol uses a generic [`ack`]( +https://github.com/hyperledger/indy-hipe/pull/77) or a [`problem-report`](https://github.com/hyperledger/indy-hipe/pull/65)). +See [Adopted Messages](#adopted-messages] below. [Semver](http://semver.org) rules apply in cascading fashion to versions of protocols, message families, and individual message types. Individual @@ -182,6 +191,42 @@ Sample messages that are presented in the narrative should also be checked in next to the markdown of the HIPE, in [Agent Plaintext format]( https://github.com/hyperledger/indy-hipe/blob/master/text/0026-agent-file-format/README.md#agent-plaintext-messages-ap). +###### Adopted Messages + +Many protocols should use general-purpose messages such as [`ack`]( +https://github.com/hyperledger/indy-hipe/pull/77) and [`problem-report`]( +https://github.com/hyperledger/indy-hipe/pull/65)) at certain points in +an interaction. This reuse is strongly encouraged because it helps us avoid +defining redundant message types--and the code to handle them--over and +over again (see [DRY principle](https://en.wikipedia.org/wiki/Don't_repeat_yourself)). + +However, using messages with generic values of `@type` (e.g., `"@type": +"did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/notification/1.0/ack"`) +introduces a challenge for agents as they route messages to their internal +routines for handling. We expect internal handlers to be organized around +protocols, since a protocol is a discrete unit of business value as well +as a unit of testing in our agent test suite. Early work on agents has +gravitated towards pluggable, routable protocols as a unit of code +encapsulation and dependency as well. Thus the natural routing question +inside an agent, when it sees a message, is "Which protocol handler should +I route this message to?" A generic `ack` can't be routed this way. + +Therefore, we allow a protocol to __adopt__ messages into its namespace. +This changes the `@type` attribute of the adopted message. Suppose a `rendezvous` +protocol is identified by the URI `did:sov:mYhnRbzCbsjhiQzDAstHgU;spec/rendezvous/2.0`, +and its definition announces that it has adopted generic 1.x `ack` +messages. When such `ack` messages are sent, the `@type` should now be +inside the namespace of the `rendezvous` protocol: + +![diff on @type caused by adoption](adoption.png) + +Adoption should be declared in an "Adopted" subsection of "Messages" in +a protocol HIPE. When adoption is specified, it should include a __minimum +adopted version__ of the adopted message type: "This protocol adopts +`ack` with version >= 1.4". All versions of the adopted message that share +the same major number should be compatible + + ##### "Constraints" under "Tutorial" Many protocols have constraints that help parties build trust. diff --git a/text/protocols/adoption.png b/text/protocols/adoption.png new file mode 100644 index 0000000000000000000000000000000000000000..d1e67c5e0dd78f72e904903dfbb9793ab8c410c3 GIT binary patch literal 27878 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 literal 0 HcmV?d00001 diff --git a/text/protocols/tictactoe-1.0/README.md b/text/protocols/tictactoe-1.0/README.md index ea9f7feb1..bcd77d459 100644 --- a/text/protocols/tictactoe-1.0/README.md +++ b/text/protocols/tictactoe-1.0/README.md @@ -1,8 +1,8 @@ -- Name: tictactoe-1.0 +- Name: Tic Tac Toe Protocol (tictactoe-1.0) - Authors: Daniel Hardman - Start Date: 2018-12-11 -# tictactoe 1.0 protocol +# Summary [summary]: #summary Describes a simple protocol, already familiar to most @@ -31,6 +31,13 @@ capture 3 cells of the grid in a straight line. ![tictactoe by Symode09 via Wikimedia Commons](tictactoe.png) +### Name and Version + +This defines the `tictactoe` protocol, version 1.x, as identified by the +following URI: + + did:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0 + ### Key Concepts A tic-tac-toe game is an interaction where 2 parties take turns to From 901971a46e227fa9a235405924917dcb006327dd Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Wed, 30 Jan 2019 15:12:27 -0700 Subject: [PATCH 20/61] Add notes about BPMN Signed-off-by: Daniel Hardman --- text/protocols/README.md | 72 +++++++++++++++++++++++++++++++--------- 1 file changed, 56 insertions(+), 16 deletions(-) diff --git a/text/protocols/README.md b/text/protocols/README.md index 618ce3403..7e105eb21 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -102,7 +102,9 @@ version and message family version are both "1.0". It possible for a protocol to use messages from other message families, as for example when a protocol uses a generic [`ack`]( https://github.com/hyperledger/indy-hipe/pull/77) or a [`problem-report`](https://github.com/hyperledger/indy-hipe/pull/65)). -See [Adopted Messages](#adopted-messages] below. +See [Adopted Messages](#adopted-messages) below. + +###### Semver Rules [Semver](http://semver.org) rules apply in cascading fashion to versions of protocols, message families, and individual message types. Individual @@ -111,11 +113,16 @@ constitutes a [public API in the semver sense](https://semver.org/#spec-item-1). An individual message type can add new optional fields, or deprecate existing fields, [with only a change to its message family's minor version](https://semver.org/#spec-item-7). -Similarly, a message family can add new message types with only a change -to the minor version. These are all backwards-compatible changes. +Similarly, a message family can add new message types (or [adopted +ones](#adopted-messages)) with only a change +to the minor version. It can announce deprecated fields. It can add additional +semantics around optional decorators. These are all backwards-compatible +changes, also requiring only a minor version update. -Any change in the expectations of a message family, even if no message attributes -are changed, must result in an [increase of the major version of the primary message family](https://semver.org/#spec-item-8). +Changes that remove fields or message types, that make formerly optional +things required, or that alter the state machine in incompatible +ways, must result in an [increase of the major version of the protocol/primary +message family](https://semver.org/#spec-item-8). ##### "Key Concepts" under "Tutorial" @@ -157,11 +164,21 @@ representation of this information is provided in a _state machine matrix_. It lists events as columns, and states as rows; a cell answers the question, "If I am in state X (=row), and event Y (=column) occurs, what happens to my state?" The [Tic Tac Toe example](tictactoe-1.0/README.md#states) -is typical. UML-style state machine diagrams are also good artifacts here. -(The matrix form is nice because it forces an exhaustive analysis of every -possible event. The diagram style is usually simpler to create and consume, -but may not consider possibilities that it should. We leave it up to -the community to settle on whether it wants just one of these, or both.) +is typical. + +[UML-style state machine diagrams](http://agilemodeling.com/artifacts/stateMachineDiagram.htm) +are good artifacts here, as are [PUML sequence diagrams]( +http://plantuml.com/sequence-diagram) and [BPMN Choreographies]( +https://www.visual-paradigm.com/guide/bpmn/bpmn-orchestration-vs-choreography-vs-collaboration/#bpmn-choreography). +The matrix form is nice because it forces an exhaustive analysis of every +possible event. The diagram styles are often simpler to create and consume, +and the PUML and BPMN form have the virtue that they can be checked in with +source code and support line-by-line diffs. However, they don't offer an +easy way to see if all possible flows have been considered; what they may +not describe isn't obvious. This--and the freedom from fancy tools--is why +the matrix form is used in many early HIPEs. We leave it up to +the community to settle on whether it wants to strongly recommend specific +diagram types.) The formal names for each state are important, as they are used in [`ack`s]( https://github.com/hyperledger/indy-hipe/pull/77) and [`problem-report`s](https://github.com/hyperledger/indy-hipe/pull/65)). @@ -209,14 +226,16 @@ as a unit of testing in our agent test suite. Early work on agents has gravitated towards pluggable, routable protocols as a unit of code encapsulation and dependency as well. Thus the natural routing question inside an agent, when it sees a message, is "Which protocol handler should -I route this message to?" A generic `ack` can't be routed this way. +I route this message to, based on its @type?" A generic `ack` can't be +routed this way. Therefore, we allow a protocol to __adopt__ messages into its namespace. -This changes the `@type` attribute of the adopted message. Suppose a `rendezvous` +This works very much like python's `from module import symbol` syntax. +It changes the `@type` attribute of the adopted message. Suppose a `rendezvous` protocol is identified by the URI `did:sov:mYhnRbzCbsjhiQzDAstHgU;spec/rendezvous/2.0`, and its definition announces that it has adopted generic 1.x `ack` -messages. When such `ack` messages are sent, the `@type` should now be -inside the namespace of the `rendezvous` protocol: +messages. When such `ack` messages are sent, the `@type` should now use +the alias defined inside the namespace of the `rendezvous` protocol: ![diff on @type caused by adoption](adoption.png) @@ -224,8 +243,8 @@ Adoption should be declared in an "Adopted" subsection of "Messages" in a protocol HIPE. When adoption is specified, it should include a __minimum adopted version__ of the adopted message type: "This protocol adopts `ack` with version >= 1.4". All versions of the adopted message that share -the same major number should be compatible - +the same major number should be compatible, given the [semver rules](#semver-rules) +noted above. ##### "Constraints" under "Tutorial" @@ -308,6 +327,27 @@ interop. # Prior art [prior-art]: #prior-art +* [BPMN](https://en.wikipedia.org/wiki/Business_Process_Model_and_Notation): A + graphical language for modeling flows of all types (plus things less like + our protocols as well). BPMN is a mature standard sponsored by [OMG]( + https://en.wikipedia.org/wiki/Object_Management_Group). It has a nice + [tool ecosystem](https://camunda.com/bpmn/tool/). It also has an XML file + format, so the visual diagrams have a two-way transformation to and from + formal written language. BPMN began with a focus on centralized processes + (those driven by a business entity), with diagrams organized around the goal + of the point-of-view entity and what they experience in the interaction. This + is somewhat different from an A2A protocol where any given entity may experience + the goal and the scope of interaction differently; the state machine for a + home inspector in the "buy a home" protocol is _quite_ different, and somewhat + separable, from the state machine of the buyer, and that of the title insurance + company. BPMN 2.0 introduced the notion of a [choreography]( + https://www.visual-paradigm.com/guide/bpmn/bpmn-orchestration-vs-choreography-vs-collaboration/#bpmn-choreography), + which is much closer to the concept of an A2A protocol, and which has quite + an elegent and intuitive visual representation. However, even a BPMN + choreography doesn't have a way to discuss interactions with decorators, + adoption of generic messages, and other A2A-specific concerns. Thus, we may + lean on BPMN for some diagramming tasks, but it is not a substitute for the + HIPE definition procedure described here. * [WSDL](https://www.w3.org/TR/2001/NOTE-wsdl-20010315): A web-centric evolution of earlier, RPC-style interface definition languages like [IDL in all its varieties](https://en.wikipedia.org/wiki/Interface_description_language) From 873fec25fd411cb504e6ddb90c73d0c473b4d31d Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Wed, 30 Jan 2019 15:15:05 -0700 Subject: [PATCH 21/61] Add notes about BPMN Signed-off-by: Daniel Hardman --- text/protocols/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/protocols/README.md b/text/protocols/README.md index 7e105eb21..bbfc79e53 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -175,7 +175,7 @@ possible event. The diagram styles are often simpler to create and consume, and the PUML and BPMN form have the virtue that they can be checked in with source code and support line-by-line diffs. However, they don't offer an easy way to see if all possible flows have been considered; what they may -not describe isn't obvious. This--and the freedom from fancy tools--is why +NOT describe isn't obvious. This--and the freedom from fancy tools--is why the matrix form is used in many early HIPEs. We leave it up to the community to settle on whether it wants to strongly recommend specific diagram types.) From f12c422213b19e4181cdd288671afe2218f82e2c Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Wed, 30 Jan 2019 15:32:54 -0700 Subject: [PATCH 22/61] Improve BPMN notes Signed-off-by: Daniel Hardman --- text/protocols/README.md | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/text/protocols/README.md b/text/protocols/README.md index bbfc79e53..c4ea124e2 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -1,15 +1,16 @@ +# 00??: Protocols (aka Message Families) + - Name: protocols - Authors: Daniel Hardman - Start Date: 2018-12-28 - PR: -# HIPE 00??: Protocols (aka Message Families) -[summary]: #summary +## [summary]: #summary Defines protocols or message families in the context of agent-to-agent interactions, and shows how they should be designed and documented. -# Motivation +## Motivation [motivation]: #motivation When we began exploring agent-to-agent interactions, we imagined that @@ -23,7 +24,7 @@ that may arise. In addition, we realized that we need clear examples of how to define all these things, so designs are consistent and robust. -# Tutorial +## Tutorial [tutorial]: #tutorial ### What is a protocol? @@ -166,19 +167,19 @@ question, "If I am in state X (=row), and event Y (=column) occurs, what happens to my state?" The [Tic Tac Toe example](tictactoe-1.0/README.md#states) is typical. -[UML-style state machine diagrams](http://agilemodeling.com/artifacts/stateMachineDiagram.htm) -are good artifacts here, as are [PUML sequence diagrams]( -http://plantuml.com/sequence-diagram) and [BPMN Choreographies]( -https://www.visual-paradigm.com/guide/bpmn/bpmn-orchestration-vs-choreography-vs-collaboration/#bpmn-choreography). +[Choreography Diagrams]( +https://www.visual-paradigm.com/guide/bpmn/bpmn-orchestration-vs-choreography-vs-collaboration/#bpmn-choreography) +from [BPMN](#bpmn) are good artifacts here, as are [PUML sequence diagrams]( +http://plantuml.com/sequence-diagram) and [UML-style state machine diagrams](http://agilemodeling.com/artifacts/stateMachineDiagram.htm). The matrix form is nice because it forces an exhaustive analysis of every possible event. The diagram styles are often simpler to create and consume, -and the PUML and BPMN form have the virtue that they can be checked in with -source code and support line-by-line diffs. However, they don't offer an +and the PUML and BPMN forms have the virtue that they can support line-by-line +diffs when checked in with source code. However, they don't offer an easy way to see if all possible flows have been considered; what they may NOT describe isn't obvious. This--and the freedom from fancy tools--is why the matrix form is used in many early HIPEs. We leave it up to the community to settle on whether it wants to strongly recommend specific -diagram types.) +diagram types. The formal names for each state are important, as they are used in [`ack`s]( https://github.com/hyperledger/indy-hipe/pull/77) and [`problem-report`s](https://github.com/hyperledger/indy-hipe/pull/65)). @@ -297,14 +298,14 @@ or for statuses), define them in this section. See ["Message Codes and Catalogs"](https://github.com/hyperledger/indy-hipe/blob/318f265d508a3ddf1da7d91c79ae4ae27ab9142b/text/localized-messages/README.md#message-codes-and-catalogs) in the [Localization HIPE](https://github.com/hyperledger/indy-hipe/pull/64). -# Reference +## Reference [reference]: #reference The [Tic-Tac-Toe 1.0 protocol]( tictactoe-1.0/README.md) is attached to this HIPE as an example of a good definition. -# Drawbacks +## Drawbacks [drawbacks]: #drawbacks This HIPE creates some formalism around defining protocols. It doesn't go @@ -316,7 +317,7 @@ The extra complexity is justified by the greater demands that agent-to-agent communications place on the protocol definition. (See notes in [Prior Art](#prior-art) section for details.) -# Rationale and alternatives +## Rationale and alternatives [alternatives]: #alternatives Some of the simplest A2A protocols could be specified in a Swagger/OpenAPI @@ -324,16 +325,21 @@ style. This would give some nice tooling. However, not all fit into that mold. It may be desirable to create conversion tools that allow Swagger interop. -# Prior art +## Prior art [prior-art]: #prior-art +[bpmn]: #bpmn * [BPMN](https://en.wikipedia.org/wiki/Business_Process_Model_and_Notation): A graphical language for modeling flows of all types (plus things less like our protocols as well). BPMN is a mature standard sponsored by [OMG]( https://en.wikipedia.org/wiki/Object_Management_Group). It has a nice [tool ecosystem](https://camunda.com/bpmn/tool/). It also has an XML file format, so the visual diagrams have a two-way transformation to and from - formal written language. BPMN began with a focus on centralized processes + formal written language. It also has a code generation mode, where BPMN + can be used to drive executable behavior if diagrams are sufficiently + detailed and sufficiently standard. (Since BPMN supports various extensions + and is often used at various levels of formality, execution is not its most + common application.) BPMN began with a focus on centralized processes (those driven by a business entity), with diagrams organized around the goal of the point-of-view entity and what they experience in the interaction. This is somewhat different from an A2A protocol where any given entity may experience From a8a96f35bc824a92b4655cf108daa308337fa1fb Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 14:18:21 -0600 Subject: [PATCH 23/61] Add section about MTURIs and PIURIs Signed-off-by: Daniel Hardman --- text/protocols/README.md | 197 +++++++++++++++++++++++++++-------- text/protocols/super-sub.png | Bin 0 -> 27861 bytes 2 files changed, 153 insertions(+), 44 deletions(-) create mode 100644 text/protocols/super-sub.png diff --git a/text/protocols/README.md b/text/protocols/README.md index c4ea124e2..dac8177d8 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -1,13 +1,14 @@ -# 00??: Protocols (aka Message Families) +# 00??: Protocols - Name: protocols - Authors: Daniel Hardman - Start Date: 2018-12-28 -- PR: +- PR: https://github.com/hyperledger/indy-hipe/pull/69 ## [summary]: #summary -Defines protocols or message families in the context of agent-to-agent interactions, +Defines protocols (and the closely related concept of message families) +in the context of agent-to-agent interactions, and shows how they should be designed and documented. ## Motivation @@ -53,29 +54,73 @@ stateful interactions like: * Negotiating * Cooperative debugging +### Agent Design + +Protocols are the key unit of interoperable extensibility in agents. To add a +new interoperable feature to an agent, give it the ability to handle a +new protocol. + +When agents receive messages, they map the messages to a __protocol handler__ +and possibly to an __interaction state__. The protocol handler is code that +knows the rules of a particular protocol; the interaction state tracks +progress through an interaction. For more information, see the [agents explainer HIPE]( +https://github.com/hyperledger/indy-hipe/blob/36913b80/text/0002-agents/README.md#general-patterns) +and the [DIDComm explainer HIPE]( +https://github.com/hyperledger/indy-hipe/blob/b0708395/text/0003-did-comm/README.md). + +### Composable + Protocols are *composable*--meaning that you can nest one inside another. The protocol for asking someone to repeat their last sentence can occur -inside the protocol for ordering food at a restaurant. The protocol for -reporting an error can occur inside an agent protocol for issuing -credentials. +inside the protocol for ordering food at a restaurant. The protocols for +reporting an error or arranging payment can occur inside a protocol for +issuing credentials. + +When we invoke one protocol inside another, we call the inner protocol a +__subprotocol__, and the outer protocol a __superprotocol__. A given protocol +may be a subprotocol in some contexts, and a standalone protocol in others. +In some contexts, a protocol may be a subprotocol from one perspective, and +a superprotocol from another (as when protocols are nested at least 3 deep). + +![super- and subprotocols](super-sub.png) + +Commonly, protocols wait for subprotocols to complete, and then they continue. +A good example of this is [ACKs](https://github.com/hyperledger/indy-hipe/blob/518b5a9a/text/acks/README.md), +which are often used as a discrete step in a larger flow. + +In other cases, a subprotocol is not "contained" inside its superprotocol. +Rather, the superprotocol triggers the subprotocol, then continues without +waiting for the subprotocol to complete. In the [introduction protocol]( +https://github.com/hyperledger/indy-hipe/blob/790987b9/text/introductions/README.md), +the final step is to begin a connection protocol between the two introducees-- +but [the introduction superprotocol completes when the connection subprotocol +*starts*, not when it *completes*]( +https://github.com/hyperledger/indy-hipe/blob/790987b9/text/introductions/README.md#goal). ### Message Families -A Message family is a collection of messages, and serves as the _interface_ -of the protocol. Each protocol has a primary message family, and the name -of the protocol is the name of the primary message family. For all practical -purposes, the primary message family (complete with documentation of the -roles, states, events and constraints) _is_ the protocol. +A message family is a collection of messages that share a common theme, goal, or +usage pattern. The messages used by a protocol +may be a subset of a particular message family; for example, the [connection +establishment protocol](../0031-connection-protocol/README.md) uses one subset +of the messages in the `connections` message family, and the [connection management +protocol](https://github.com/hyperledger/indy-hipe/blob/baa1ead5/text/conn-mgmt-protocols/README.md) +a different subset. + +Collectively, the message types of a protocol serve as its _interface_. Each protocol +has a primary message family, and the name of the protocol is often the name of the +primary message family. ### Ingredients -An agent protocol has the following ingredients: +A protocol has the following ingredients: -* _primary message family name and version_ -* _adopted messages_ +* _name and version_ +* _primary message family_ +* [_adopted messages_](#adopted-messages) * _roles_ * _state_ and _sequencing rules_ -* _events that can change state_ -- notably, _messages_ +* _events that can change state_ -- notably, _messages_, but also _errors_, _timeouts_, and so forth * _constraints that provide trust and incentives_ ### How to define a protocol or message family @@ -86,26 +131,90 @@ tictactoe-1.0/README.md) is attached to this HIPE as an example. A protocol HIPE conforms to general HIPE patterns, but includes some specific substructure: -##### "Name and Version" under "Tutorial" +#### "Name and Version" under "Tutorial" -The first section of a protocol HIPE, under "Tutorial", should be named +The first section of a protocol HIPE, under "Tutorial", should be called "Name and Version". It should specify the official name of the protocol -and its version, including a URI by which the protocol will be known. -Because protocol names are likely to be used in filenames -and URIs, they are conventionally lower-kebab-case, but are compared -case-insensitively and ignoring punctuation. -The name of the protocol and the name of -its primary message family are identical, and so are the versions. -In the [tictactoe 1.0 example](tictactoe-1.0/README.md), the protocol -name and message family name are both "tictactoe", and the protocol -version and message family version are both "1.0". - -It possible for a protocol to use messages from other message families, -as for example when a protocol uses a generic [`ack`]( -https://github.com/hyperledger/indy-hipe/pull/77) or a [`problem-report`](https://github.com/hyperledger/indy-hipe/pull/65)). -See [Adopted Messages](#adopted-messages) below. - -###### Semver Rules +and its version. + +Protocol names are conventionally lower_snake_case (especially in URIs), +but are compared case-insensitively and ignoring punctuation. This means +that all of the following protocol names are considered identical in +comparison, and can be used interchangeably, depending on what's appropriate +for a given context (a user-friendly doc vs. CSS vs. python class vs. java class): + +* `Let's Do Lunch!` +* `lets-do-lunch` +* `lets_do_lunch` +* `LetsDoLunch` + +##### URI representation + +The name of the protocol and its version must be encoded in a __message type +URI__ (MTURI) that identifies message types unambiguously. The format of the +MTURI is important because it is is parsed by agents that will map messages to +handlers--basically, code will look at this string and say, "Do I have +something that can handle this message type inside protocol X version Y?" +Therefore, it is a critical consideration for interoperability. The URI MUST +be built as follows: + +```ABNF +message-type-uri = doc-uri delim protocol-name + "/" protocol-version "/" message-type-name +delim = "?" / "/" / "&" / ":" / ";" / "=" +protocol-name = identifier +protocol-version = semver +message-type-name = identifier +identifier = alpha (alphanumeric / "_" / "-" / ".") alphanumeric +``` + +It can be loosely matched and parsed with the following regex: + + (.*?)([a-z0-9._-]+)/(\d[^/]*)/[a-z0-9._-]+$ + +A match will have captures groups of (1) = `doc-uri`, (2) = `protocol-name`, +(3) = `protocol-version`, and (4) = `message-type-name`. + +The goals of this URI are, in descending priority: + +* Code can use the URI to route messages to protocol +handlers using semver rules. + +* The definition of a protocol should be tied to the URI such +that it is semantically stable. This means that once version 1.0 +of a protocol is defined, its definition should not change in +ways that would break implementations. (See the [semver](#semver) +section for more on this.) + +* Developers can discover information about novel protocols, using +the URI to browse or search the web. + +The `doc-uri` portion is any URI that exposes documentation about +protocols. A developer should browse to that URI and use human intelligence +to look up the named and versioned protocol. Optionally, the full URI may +produce a page of documentation about a specific message type. + +A shorter URI that follows the same conventions but lacks the +`message-type-name` portion is called a __protocol identifier URI__ +(PIURI). Its matcher reges is: + + (.*?)([a-z0-9._-]+)/(\d[^/]*)/?$ + +Some examples of valid MTURIs and PIURIs include: + +* `http://example.com/protocols?which=lets_do_lunch/1.0/` (PIURI) +* `http://example.com/message_types?which=lets_do_lunch/1.0/proposal` (MTURI) +* `https://github.com/hyperledger/indy-hipe/tree/d7879f5e/text:trust_ping/1.0/ping` + (MTURI). Note that this URI returns a 404 error if followed directly--but + per rules described above, the developer should browse to the doc root + ([https://github.com/hyperledger/indy-hipe/tree/d7879f5e/text]( + https://github.com/hyperledger/indy-hipe/tree/d7879f5e/text + )) and look for documentation on the `trust_ping/1.0` protocol. +* `did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/trust_ping/1.0/ping` (MTURI) This + uses a DID reference to look up an endpoint named `spec` that serves + information about protocols. + +##### Semver Rules [Semver](http://semver.org) rules apply in cascading fashion to versions of protocols, message families, and individual message types. Individual @@ -125,7 +234,7 @@ things required, or that alter the state machine in incompatible ways, must result in an [increase of the major version of the protocol/primary message family](https://semver.org/#spec-item-8). -##### "Key Concepts" under "Tutorial" +#### "Key Concepts" under "Tutorial" This is the first subsection under "Tutorial". It is short--a paragraph or two. It defines terms and describes the flow of the interaction at a very @@ -137,7 +246,7 @@ After reading this section, a developer should know what problem your protocol solves, and should have a rough idea of how the protocol works in its simpler variants. -##### "Roles" under "Tutorial" +#### "Roles" under "Tutorial" This is the next subsection. It gives a formal name to the roles in the protocol, says who and how many can play each role, and describes constraints @@ -156,7 +265,7 @@ different features, but they both use the _credential-issuance_ protocol. By convention, role names use lower-kebab-case but are compared case-insensitively and ignoring punctuation. -##### "States" under "Tutorial" +#### "States" under "Tutorial" This section lists the possible states that exist for each role. It also enumerates the events (often but not always messages) that can occur, @@ -193,7 +302,7 @@ definition, and its omission is a big miss. Analyzing all possible states and events for all roles leads to robustness; skipping the analysis leads to fragility. -##### "Messages" under "Tutorial" +#### "Messages" under "Tutorial" If there is a message family associated with this protocol, this section describes each member of it. It should also note the names and @@ -209,7 +318,7 @@ Sample messages that are presented in the narrative should also be checked in next to the markdown of the HIPE, in [Agent Plaintext format]( https://github.com/hyperledger/indy-hipe/blob/master/text/0026-agent-file-format/README.md#agent-plaintext-messages-ap). -###### Adopted Messages +##### Adopted Messages Many protocols should use general-purpose messages such as [`ack`]( https://github.com/hyperledger/indy-hipe/pull/77) and [`problem-report`]( @@ -247,7 +356,7 @@ adopted version__ of the adopted message type: "This protocol adopts the same major number should be compatible, given the [semver rules](#semver-rules) noted above. -##### "Constraints" under "Tutorial" +#### "Constraints" under "Tutorial" Many protocols have constraints that help parties build trust. For example, in buying a house, the protocol includes such things as @@ -256,7 +365,7 @@ earnest money, and a phase of the process where a home inspection takes place. If you are documenting a protocol that has attributes like these, explain them here. If not, the section can be omitted. -##### "Messages" under "Reference" +#### "Messages" under "Reference" Unless the "Messages" section under "Tutorial" covered everything that needs to be known about all message fields, this is where the data type, @@ -270,19 +379,19 @@ Each message type should be associated with one or more roles in the protocol. That is, it should be clear which roles can send and receive which message types. -##### "Examples" under "Reference" +#### "Examples" under "Reference" This section is optional. It can be used to show alternate flows through the protocol. -##### "Collateral" under "Reference" +#### "Collateral" under "Reference" This section is optional. It could be used to reference files, code, relevant standards, oracles, test suites, or other artifacts that would be useful to an implementer. In general, collateral should be checked in with the HIPE. -##### "Localization" under "Reference" +#### "Localization" under "Reference" If communication in the protocol involves humans, then localization of message content may be relevant. Default settings for localization of @@ -291,7 +400,7 @@ described here and checked in with the HIPE. See ["Decorators at Message Type Scope"](https://github.com/hyperledger/indy-hipe/blob/318f265d508a3ddf1da7d91c79ae4ae27ab9142b/text/localized-messages/README.md#decorator-at-message-type-scope) in the [Localization HIPE](https://github.com/hyperledger/indy-hipe/pull/64). -##### "Message Catalog" under "Reference" +#### "Message Catalog" under "Reference" If the protocol has a formally defined catalog of codes (e.g., for errors or for statuses), define them in this section. See ["Message Codes and diff --git a/text/protocols/super-sub.png b/text/protocols/super-sub.png new file mode 100644 index 0000000000000000000000000000000000000000..c59cbe7975f2a1b2026f249ec3c60c8f921aeef1 GIT binary patch literal 27861 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 literal 0 HcmV?d00001 From ebdfa6024be666c76e2b39ca8628aeefb6680ce1 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 14:28:08 -0600 Subject: [PATCH 24/61] Add async subprotocol diagram Signed-off-by: Daniel Hardman --- text/protocols/README.md | 20 ++++++++------------ text/protocols/super-sub-async.png | Bin 0 -> 33190 bytes 2 files changed, 8 insertions(+), 12 deletions(-) create mode 100644 text/protocols/super-sub-async.png diff --git a/text/protocols/README.md b/text/protocols/README.md index dac8177d8..28c1c4a4e 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -5,14 +5,13 @@ - Start Date: 2018-12-28 - PR: https://github.com/hyperledger/indy-hipe/pull/69 -## [summary]: #summary +## Summary Defines protocols (and the closely related concept of message families) in the context of agent-to-agent interactions, and shows how they should be designed and documented. ## Motivation -[motivation]: #motivation When we began exploring agent-to-agent interactions, we imagined that interoperability would be achieved by formally defining message families. @@ -26,7 +25,6 @@ In addition, we realized that we need clear examples of how to define all these things, so designs are consistent and robust. ## Tutorial -[tutorial]: #tutorial ### What is a protocol? @@ -89,13 +87,16 @@ A good example of this is [ACKs](https://github.com/hyperledger/indy-hipe/blob/5 which are often used as a discrete step in a larger flow. In other cases, a subprotocol is not "contained" inside its superprotocol. -Rather, the superprotocol triggers the subprotocol, then continues without -waiting for the subprotocol to complete. In the [introduction protocol]( +Rather, the superprotocol triggers the subprotocol, then continues in parallel, +without waiting for the subprotocol to complete. In the [introduction protocol]( https://github.com/hyperledger/indy-hipe/blob/790987b9/text/introductions/README.md), the final step is to begin a connection protocol between the two introducees-- but [the introduction superprotocol completes when the connection subprotocol *starts*, not when it *completes*]( -https://github.com/hyperledger/indy-hipe/blob/790987b9/text/introductions/README.md#goal). +https://github.com/hyperledger/indy-hipe/blob/790987b9/text/introductions/README.md#goal). + +![super- and async subprotocols](super-sub-async.png) + ### Message Families @@ -408,14 +409,12 @@ Catalogs"](https://github.com/hyperledger/indy-hipe/blob/318f265d508a3ddf1da7d91 in the [Localization HIPE](https://github.com/hyperledger/indy-hipe/pull/64). ## Reference -[reference]: #reference The [Tic-Tac-Toe 1.0 protocol]( tictactoe-1.0/README.md) is attached to this HIPE as an example of a good definition. ## Drawbacks -[drawbacks]: #drawbacks This HIPE creates some formalism around defining protocols. It doesn't go nearly as far as SOAP or CORBA/COM did, but it is slightly more demanding @@ -427,15 +426,13 @@ communications place on the protocol definition. (See notes in [Prior Art](#prio section for details.) ## Rationale and alternatives -[alternatives]: #alternatives -Some of the simplest A2A protocols could be specified in a Swagger/OpenAPI +Some of the simplest DIDComm protocols could be specified in a Swagger/OpenAPI style. This would give some nice tooling. However, not all fit into that mold. It may be desirable to create conversion tools that allow Swagger interop. ## Prior art -[prior-art]: #prior-art [bpmn]: #bpmn * [BPMN](https://en.wikipedia.org/wiki/Business_Process_Model_and_Notation): A @@ -498,7 +495,6 @@ interop. plugins. # Unresolved questions -[unresolved]: #unresolved-questions - Should we write a Swagger translator? - If not swagger, what formal definition format should we use in the future? diff --git a/text/protocols/super-sub-async.png b/text/protocols/super-sub-async.png new file mode 100644 index 0000000000000000000000000000000000000000..c626f36afae92de7a18f4d49cdfada5bff0c1ea6 GIT binary patch literal 33190 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�(r z>ip{&_%_If7bG6U&R$&t-axsswqk_z}G8o<7#bhBmU>35WkI}m8dm8mx!

EtO_Z98rK&nG4zAON%an+R>E3aF$}w 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 Date: Fri, 5 Apr 2019 14:31:01 -0600 Subject: [PATCH 25/61] generic protocol logo Signed-off-by: Daniel Hardman --- text/protocols/README.md | 2 ++ text/protocols/protocol.png | Bin 0 -> 8572 bytes 2 files changed, 2 insertions(+) create mode 100644 text/protocols/protocol.png diff --git a/text/protocols/README.md b/text/protocols/README.md index 28c1c4a4e..dbd80e9d1 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -21,6 +21,8 @@ to formally define the roles in an interaction, the possible states those roles can have, the way state changes in response to messages, and the errors that may arise. +![protocol](protocol.png) + In addition, we realized that we need clear examples of how to define all these things, so designs are consistent and robust. diff --git a/text/protocols/protocol.png b/text/protocols/protocol.png new file mode 100644 index 0000000000000000000000000000000000000000..acc5c2c372a575aa40db26ba498866d501b6201c GIT binary patch literal 8572 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 F{{tSP^A`XB literal 0 HcmV?d00001 From 1817f93e133b1ce44ed26fa1759ff89732195a85 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 15:14:39 -0600 Subject: [PATCH 26/61] Expand state machine topic Signed-off-by: Daniel Hardman --- text/protocols/README.md | 71 +++++++++++++++++++++++++++++++++------- 1 file changed, 60 insertions(+), 11 deletions(-) diff --git a/text/protocols/README.md b/text/protocols/README.md index dbd80e9d1..0ba4cbe9d 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -168,7 +168,7 @@ delim = "?" / "/" / "&" / ":" / ";" / "=" protocol-name = identifier protocol-version = semver message-type-name = identifier -identifier = alpha (alphanumeric / "_" / "-" / ".") alphanumeric +identifier = alpha *(*(alphanumeric / "_" / "-" / ".") alphanumeric) ``` It can be loosely matched and parsed with the following regex: @@ -193,19 +193,20 @@ section for more on this.) the URI to browse or search the web. The `doc-uri` portion is any URI that exposes documentation about -protocols. A developer should browse to that URI and use human intelligence -to look up the named and versioned protocol. Optionally, the full URI may -produce a page of documentation about a specific message type. +protocols. A developer should be able to browse to that URI and use human intelligence +to look up the named and versioned protocol. Optionally and preferably, the +full URI may produce a page of documentation about the specific message type, +with no human mediation involved. A shorter URI that follows the same conventions but lacks the `message-type-name` portion is called a __protocol identifier URI__ -(PIURI). Its matcher reges is: +(PIURI). Its loose matcher regex is: (.*?)([a-z0-9._-]+)/(\d[^/]*)/?$ Some examples of valid MTURIs and PIURIs include: -* `http://example.com/protocols?which=lets_do_lunch/1.0/` (PIURI) +* `http://example.com/protocols?which=lets_do_lunch/1.0/` (PIURI with fully automated lookup of protocol docs) * `http://example.com/message_types?which=lets_do_lunch/1.0/proposal` (MTURI) * `https://github.com/hyperledger/indy-hipe/tree/d7879f5e/text:trust_ping/1.0/ping` (MTURI). Note that this URI returns a 404 error if followed directly--but @@ -215,18 +216,22 @@ Some examples of valid MTURIs and PIURIs include: )) and look for documentation on the `trust_ping/1.0` protocol. * `did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/trust_ping/1.0/ping` (MTURI) This uses a DID reference to look up an endpoint named `spec` that serves - information about protocols. + information about protocols. (The exact syntax of DID references--URIs + where the DID functions like a domain name, and additional info is + fetched from a DID Doc in much the same way IP address and hostname + definitions are fetched from a DNS record--is still being finalized. + See the latest [DID Spec](https://w3c-ccg.github.io/did-spec) for details.) ##### Semver Rules [Semver](http://semver.org) rules apply in cascading fashion to versions -of protocols, message families, and individual message types. Individual -message types are versioned as part of a coherent message family, which +of protocols and individual message types. Individual +message types are versioned as part of a coherent protocol, which constitutes a [public API in the semver sense](https://semver.org/#spec-item-1). An individual message type can add new optional fields, or deprecate existing fields, [with only a change to its message family's minor version](https://semver.org/#spec-item-7). -Similarly, a message family can add new message types (or [adopted +Similarly, a protocol can add new message types (or [adopted ones](#adopted-messages)) with only a change to the minor version. It can announce deprecated fields. It can add additional semantics around optional decorators. These are all backwards-compatible @@ -295,6 +300,11 @@ diagram types. The formal names for each state are important, as they are used in [`ack`s]( https://github.com/hyperledger/indy-hipe/pull/77) and [`problem-report`s](https://github.com/hyperledger/indy-hipe/pull/65)). +For example, a `problem-report` message declares which state the sender +arrived at because of the problem. This helps other parties in an interaction +to react to errors with confidence. Formal state names are also used in the +agent test suite, in log messages, and so forth. + By convention, state names use lower-kebab-case but are compared case-insensitively and ignoring punctuation. @@ -305,6 +315,45 @@ definition, and its omission is a big miss. Analyzing all possible states and events for all roles leads to robustness; skipping the analysis leads to fragility. +##### State machines + +Writing a formal state machine to accompany the state matrix of a protocol +is not required, but it is a best practice. For developers who have not worked +with state machines before, this may sound intimidating, but it is actually +quite easy, and it provides a clean encapsulation of logic that would otherwise +be a bunch of conditionals scattered throughout the code. It also provides a +convenient way to load state later, when a message arrives for an interaction +that is only partly complete. And it makes formal testing for completeness and +security much easier. + +The introduction HIPE includes a sample state machine. [TODO: get link] + +For an extended example of how state machines can be used, including in nested +protocols, and with hooks that let custom processing happen at each point in +a flow, see [https://github.com/dhh1128/distributed-state-machine]( +https://github.com/dhh1128/distributed-state-machine/blob/master/README.md). + +##### Processing Points + +A protocol definition describes key points in the flow where business logic +can attach. Some of these __processing points__ are obvious, because the +protocol calls for a decision to be made. Others are implicit. Some examples +include: + +* The _beginning_ and _end_. +* The _launch of a subprotocol_. +* The _completion of a subprotocol_, or the _subprotocol changing state_. +* _Sending a message_. (For each send, the sender could choose to go silent +and abandon the interaction instead, though many +protocols would ask for notification to be emitted as best practice.) +* (Receiving a message_. (Requires validation, then integration +with policy and processes internal to the agent and its sovereign domain, +to move the interaction forward.) + +When a protocol is modeled with a state machine, each of these processing +points can be hooked without cluttering the state machine itself. This is +a nice encapsulation pattern. + #### "Messages" under "Tutorial" If there is a message family associated with this protocol, this @@ -318,7 +367,7 @@ fields may not appear; an exhaustive catalog is saved for the "Reference" section. Sample messages that are presented in the narrative should also be checked -in next to the markdown of the HIPE, in [Agent Plaintext format]( +in next to the markdown of the HIPE, in [DIDComm Plaintext format]( https://github.com/hyperledger/indy-hipe/blob/master/text/0026-agent-file-format/README.md#agent-plaintext-messages-ap). ##### Adopted Messages From cae6e52c1165eb992fd244cfc0b5683198958c48 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 15:21:54 -0600 Subject: [PATCH 27/61] Reformat tictactoe protocol slightly Signed-off-by: Daniel Hardman --- text/protocols/README.md | 8 ++++---- text/protocols/tictactoe-1.0/README.md | 18 ++++++++---------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/text/protocols/README.md b/text/protocols/README.md index 0ba4cbe9d..f5a080db6 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -118,11 +118,11 @@ primary message family. A protocol has the following ingredients: -* _name and version_ -* _primary message family_ +* [_name and version_](#name-and-version-under-tutorial) +* [_messages (primary message family)_](#messages-under-tutorial) * [_adopted messages_](#adopted-messages) -* _roles_ -* _state_ and _sequencing rules_ +* [_roles_](#roles-under-tutorial) +* [_state_ and _sequencing rules_](#state-under-tutorial) * _events that can change state_ -- notably, _messages_, but also _errors_, _timeouts_, and so forth * _constraints that provide trust and incentives_ diff --git a/text/protocols/tictactoe-1.0/README.md b/text/protocols/tictactoe-1.0/README.md index bcd77d459..e9ae335b7 100644 --- a/text/protocols/tictactoe-1.0/README.md +++ b/text/protocols/tictactoe-1.0/README.md @@ -1,16 +1,17 @@ -- Name: Tic Tac Toe Protocol (tictactoe-1.0) +# Tic Tac Toe 1.0 Protocol + - Authors: Daniel Hardman - Start Date: 2018-12-11 -# Summary -[summary]: #summary +![tictactoe by Symode09 via Wikimedia Commons](tictactoe.png) + +## Summary Describes a simple protocol, already familiar to most developers, as a way to demonstrate how all protocols should be documented. -# Motivation -[motivation]: #motivation +## Motivation Playing tic-tac-toe is a good way to test whether agents are working properly, since it requires two parties to take turns @@ -22,15 +23,12 @@ identify functional gaps. The game also provides a way of testing interactions with the human owners of agents, or of hooking up an agent AI. -# Tutorial -[tutorial]: #tutorial +## Tutorial [Tic-tac-toe is a simple game](https://en.wikipedia.org/wiki/Tic-tac-toe) where players take turns placing Xs and Os in a 3x3 grid, attempting to capture 3 cells of the grid in a straight line. -![tictactoe by Symode09 via Wikimedia Commons](tictactoe.png) - ### Name and Version This defines the `tictactoe` protocol, version 1.x, as identified by the @@ -232,7 +230,7 @@ path back to the sender to be useful. place. If you are documenting a protocol that has attributes like these, explain them here. -# Reference +## Reference About the Reference section: If the Tutorial > Messages section suppresses details, we would add a Messages section here to From af9d0379cfee58b0ae47390baf65d3e69a840ef4 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 17:55:24 -0600 Subject: [PATCH 28/61] Update protocol and add state machine+tests Signed-off-by: Daniel Hardman --- text/protocols/tictactoe-1.0/@l10n.json | 8 --- text/protocols/tictactoe-1.0/README.md | 2 +- text/protocols/tictactoe-1.0/game.py | 25 ++++++-- text/protocols/tictactoe-1.0/state_machine.py | 46 ++++++++++++++ .../tictactoe-1.0/test_state_machine.py | 58 ++++++++++++++++++ text/protocols/tictactoe-1.0/~l10n.json | 8 +++ .../tictactoe-1.0/{@l10n.png => ~l10n.png} | Bin 7 files changed, 134 insertions(+), 13 deletions(-) delete mode 100644 text/protocols/tictactoe-1.0/@l10n.json create mode 100644 text/protocols/tictactoe-1.0/state_machine.py create mode 100644 text/protocols/tictactoe-1.0/test_state_machine.py create mode 100644 text/protocols/tictactoe-1.0/~l10n.json rename text/protocols/tictactoe-1.0/{@l10n.png => ~l10n.png} (100%) diff --git a/text/protocols/tictactoe-1.0/@l10n.json b/text/protocols/tictactoe-1.0/@l10n.json deleted file mode 100644 index 37a724b77..000000000 --- a/text/protocols/tictactoe-1.0/@l10n.json +++ /dev/null @@ -1,8 +0,0 @@ - -{ - "@l10n": { - "localizable": ["comment"], - "catalogs": ["https://github.com/hyperledger/indy-hipe/blob/a0d57d1f589945de58d8f7711b081500026b8713/text/tictactoe-protocol/catalog.json"] - } -} - diff --git a/text/protocols/tictactoe-1.0/README.md b/text/protocols/tictactoe-1.0/README.md index e9ae335b7..424c77afe 100644 --- a/text/protocols/tictactoe-1.0/README.md +++ b/text/protocols/tictactoe-1.0/README.md @@ -268,7 +268,7 @@ below to make this protocol's specific error strings localizable. Thus, all instances of this message family carry localization metadata in the form of an implicit `@l10n` decorator that looks like this: -[![@l10n](@l10n.png)](@l10n.json) +[![~l10n](~l10n.png)](~l10n.json) This JSON fragment is checked in next to the narrative content of this HIPE as [@l10n.json](@l10n.json), for easy machine parsing. diff --git a/text/protocols/tictactoe-1.0/game.py b/text/protocols/tictactoe-1.0/game.py index 2b61fcec7..acc78c66e 100644 --- a/text/protocols/tictactoe-1.0/game.py +++ b/text/protocols/tictactoe-1.0/game.py @@ -2,6 +2,7 @@ _move_split_pat = re.compile(r'\s*,\s*|\s*') + def key_to_idx(key): bad_key = (not isinstance(key, str)) or len(key) != 2 if not bad_key: @@ -18,11 +19,13 @@ def key_to_idx(key): raise KeyError('Bad key "%s". Expected A1 through C3.' % key) return ((r - 1) * 3) + 'ABC'.index(c) + def idx_to_key(i): if (not isinstance(i, int)) or i < 0 or i > 8: raise ValueError('Expected idx between 0 and 8, inclusive.') return 'ABC'[i % 3] + str(int(1 + (i / 3))) + def other_player(player:str): if (not isinstance(player, str)) or (len(player) != 1) or (player not in 'xoXO'): raise ValueError('Expected X or O.') @@ -41,12 +44,15 @@ def other_player(player:str): DIAG2 = [2, 4, 6] LINES = [ROW1, ROW2, ROW3, COL1, COL2, COL3, DIAG1, DIAG2] + class Game: def __init__(self): self.cells = [None]*9 self.first = None + def __getitem__(self, key): return self.cells[key_to_idx(key)] + def __setitem__(self, key, x_or_o): if (not isinstance(x_or_o, str)) or (len(x_or_o) != 1) or (x_or_o not in 'xoXO') : raise ValueError('Bad value. Expected X or O.') @@ -61,6 +67,7 @@ def __setitem__(self, key, x_or_o): if self.cells[i] is not None: raise Exception("Can't reuse square %s. It already has an %s in it." % (x_or_o, self.cells[i])) self.cells[i] = x_or_o + def whose_turn(self): if self.first: xs = self.cells.count('X') @@ -70,6 +77,7 @@ def whose_turn(self): elif os > xs: return 'X' return self.first + def __str__(self): s = ' A B C\n' for row in range(3): @@ -82,11 +90,12 @@ def __str__(self): if row != 2: s += '\n' return s + def winner(self): - ''' + """ Search for a winner. Return None if game isn't over, "X" if player X won, "O" if player O won, and the empty string if it's a draw. - ''' + """ draw = True for line in LINES: c1 = self.cells[line[0]] @@ -101,12 +110,17 @@ def winner(self): draw = False if draw: return '' + + def is_done(self): + return self.winner() is not None + def load(self, moves): - '''Load an array of moves like "X:A1" into a game.''' + """Load an array of moves like "X:A1" into a game.""" for m in moves: self[m[2:]] = m[0] + def dump(self): - '''Convert a game into an array of moves like "X:A1".''' + """Convert a game into an array of moves like "X:A1".""" moves = [] for i in range(9): c = self.cells[i] @@ -114,7 +128,10 @@ def dump(self): moves.append('%s:%s' % (c, idx_to_key(i))) return moves + if __name__ == '__main__': + # Play an interactive game with an AI. + import random import sys diff --git a/text/protocols/tictactoe-1.0/state_machine.py b/text/protocols/tictactoe-1.0/state_machine.py new file mode 100644 index 000000000..2880c09e3 --- /dev/null +++ b/text/protocols/tictactoe-1.0/state_machine.py @@ -0,0 +1,46 @@ +# Define states and events, including symbolic (numeric) constants and their friendly names. +STATE_NAMES = ['my-move', 'their-move', 'wrap-up', 'done'] +for i in range(len(STATE_NAMES)): + globals()[STATE_NAMES[i].replace('-', '_').upper() + '_STATE'] = i + +EVENT_NAMES = ['send move', 'receive move', 'send outcome', 'receive outcome'] +for i in range(len(EVENT_NAMES)): + globals()[EVENT_NAMES[i].upper().replace(' ', '_') + '_EVENT'] = i + + +class StateMachine: + def __init__(self, logic, pre=None, post=None, on_error=None): + self.state = None + self.logic = logic + self.pre = pre + self.post = post + self.on_error = on_error + + def handle(self, event): + s = self.state + if event == SEND_MOVE_EVENT: + if s in [None, MY_MOVE_STATE]: + self._transition_to(THEIR_MOVE_STATE, event) + else: + raise AssertionError(f"Programmer error; I can't move when state = {STATE_NAMES[s]}.") + elif event == RECEIVE_MOVE_EVENT: + if s in [None, THEIR_MOVE_STATE]: + self._transition_to(WRAP_UP_STATE if self.logic.is_done() else MY_MOVE_STATE, event) + else: + self._on_error(f"You can't move when state = {STATE_NAMES[s]}") + elif event in [SEND_OUTCOME_EVENT, RECEIVE_OUTCOME_EVENT]: + self._transition_to(DONE_STATE, event) + else: + raise AssertionError("Illegal event %d." % event) + + def _on_error(self, msg): + if self.on_error: + self.on_error(msg) + + def _transition_to(self, state, event): + if self.pre: + if not self.pre(self, state, event): + return + self.state = state + if self.post: + self.post(self, state, event) \ No newline at end of file diff --git a/text/protocols/tictactoe-1.0/test_state_machine.py b/text/protocols/tictactoe-1.0/test_state_machine.py new file mode 100644 index 000000000..e78608b4f --- /dev/null +++ b/text/protocols/tictactoe-1.0/test_state_machine.py @@ -0,0 +1,58 @@ +import pytest + +from state_machine import * + +class NeverDone: + def is_done(self): + return False + +@pytest.fixture +def basic(): + return StateMachine(NeverDone()) + +def test_no_state_on_start(basic): + assert basic.state is None + +def test_my_move_first(basic): + basic.handle(SEND_MOVE_EVENT) + assert basic.state is THEIR_MOVE_STATE + +def test_their_move_first(basic): + basic.handle(RECEIVE_MOVE_EVENT) + assert basic.state is MY_MOVE_STATE + +def test_illegal_move_by_me(basic): + basic.handle(SEND_MOVE_EVENT) + # This is a programmer error, so it should assert. + with pytest.raises(AssertionError): + basic.handle(SEND_MOVE_EVENT) + +class ErrorHandler: + def __init__(self): + self.msg = None + + def __call__(self, msg): + self.msg = msg + +def test_illegal_move_by_them(basic): + # This is an error by the other party, so it should + # trigger on_error. + basic.on_error = ErrorHandler() + basic.handle(RECEIVE_MOVE_EVENT) + assert basic.on_error.msg is None + assert basic.state == MY_MOVE_STATE + basic.handle(RECEIVE_MOVE_EVENT) + assert basic.on_error.msg is not None + assert basic.state == MY_MOVE_STATE + +def test_early_exit_by_me(basic): + basic.handle(RECEIVE_MOVE_EVENT) + basic.handle(SEND_OUTCOME_EVENT) + assert basic.state == DONE_STATE + +def test_early_exit_by_them(basic): + basic.handle(SEND_MOVE_EVENT) + basic.handle(SEND_OUTCOME_EVENT) + assert basic.state == DONE_STATE + + diff --git a/text/protocols/tictactoe-1.0/~l10n.json b/text/protocols/tictactoe-1.0/~l10n.json new file mode 100644 index 000000000..7cbeffcb0 --- /dev/null +++ b/text/protocols/tictactoe-1.0/~l10n.json @@ -0,0 +1,8 @@ +{ + "~l10n": { + "locales": [{"locale": "en", "fields": ["comment"]}], + "catalogs": [ + "https://github.com/hyperledger/indy-hipe/blob/a0d57d1f/text/protocols/catalog.json" + ] + } +} diff --git a/text/protocols/tictactoe-1.0/@l10n.png b/text/protocols/tictactoe-1.0/~l10n.png similarity index 100% rename from text/protocols/tictactoe-1.0/@l10n.png rename to text/protocols/tictactoe-1.0/~l10n.png From 551d1c04f17c87b0acd0445fc41c1236116d71ab Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 18:44:50 -0600 Subject: [PATCH 29/61] float right Signed-off-by: Daniel Hardman --- text/protocols/tictactoe-1.0/README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/text/protocols/tictactoe-1.0/README.md b/text/protocols/tictactoe-1.0/README.md index 424c77afe..51b23d3ce 100644 --- a/text/protocols/tictactoe-1.0/README.md +++ b/text/protocols/tictactoe-1.0/README.md @@ -1,10 +1,8 @@ # Tic Tac Toe 1.0 Protocol -- Authors: Daniel Hardman +- tictactoe by Symode09 via Wikimedia CommonsAuthors: Daniel Hardman - Start Date: 2018-12-11 -![tictactoe by Symode09 via Wikimedia Commons](tictactoe.png) - ## Summary Describes a simple protocol, already familiar to most From e1624b5edeed1689b33eaba27168e107ab916bc2 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 19:03:45 -0600 Subject: [PATCH 30/61] add banner Signed-off-by: Daniel Hardman --- text/protocols/tictactoe-1.0/README.md | 3 +-- text/protocols/tictactoe-1.0/banner.png | Bin 0 -> 52747 bytes 2 files changed, 1 insertion(+), 2 deletions(-) create mode 100644 text/protocols/tictactoe-1.0/banner.png diff --git a/text/protocols/tictactoe-1.0/README.md b/text/protocols/tictactoe-1.0/README.md index 51b23d3ce..708cf19dd 100644 --- a/text/protocols/tictactoe-1.0/README.md +++ b/text/protocols/tictactoe-1.0/README.md @@ -1,7 +1,6 @@ # Tic Tac Toe 1.0 Protocol -- tictactoe by Symode09 via Wikimedia CommonsAuthors: Daniel Hardman -- Start Date: 2018-12-11 +![tictactoe by Symode09 via Wikimedia Commons](banner.png) ## Summary diff --git a/text/protocols/tictactoe-1.0/banner.png b/text/protocols/tictactoe-1.0/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..aecba2479eb68c7a83b90cb9f0d3940f2fe0ec31 GIT binary patch literal 52747 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 YtEIS--!hkXXZ7#dze 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 x+L7~WHFSX$F6wS<}vkjF_oHj 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 literal 0 HcmV?d00001 From 8c566b95e41899cd36588380192c540bfa0378c4 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 19:15:08 -0600 Subject: [PATCH 31/61] Add visual tile Signed-off-by: Daniel Hardman --- text/protocols/README.md | 2 ++ text/protocols/tictactoe-1.0/tile.png | Bin 0 -> 43246 bytes 2 files changed, 2 insertions(+) create mode 100644 text/protocols/tictactoe-1.0/tile.png diff --git a/text/protocols/README.md b/text/protocols/README.md index f5a080db6..307bb48d6 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -131,6 +131,8 @@ A protocol has the following ingredients: To define a protocol, write a HIPE. The [tictactoe 1.0 protocol]( tictactoe-1.0/README.md) is attached to this HIPE as an example. +[![tictactoe protocol](tictactoe-1.0/tile.png)](tictactoe-1.0/README.md) + A protocol HIPE conforms to general HIPE patterns, but includes some specific substructure: diff --git a/text/protocols/tictactoe-1.0/tile.png b/text/protocols/tictactoe-1.0/tile.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b0c82fab976ca18394044f33834113d7013744 GIT binary patch literal 43246 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%0Dr}xS0FrGw-eo#)mdGzqbw4W2jU@OA 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 `k0nzgfHT^0V*3?+q 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 G(EkBoN7MuW literal 0 HcmV?d00001 From cb3d6d1f26cb39f7a498e55621c3eb7a9d72cb0a Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 19:32:48 -0600 Subject: [PATCH 32/61] Improve tile Signed-off-by: Daniel Hardman --- text/protocols/tictactoe-1.0/tile.png | Bin 43246 -> 42849 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/text/protocols/tictactoe-1.0/tile.png b/text/protocols/tictactoe-1.0/tile.png index f3b0c82fab976ca18394044f33834113d7013744..bca132034bb6903bc96d2baa410236b0eb0e1ad0 100644 GIT binary patch delta 37975 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�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 delta 38710 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 From bc72f9697d6bbae3984e2c06a709b17bc54beeca Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 19:37:45 -0600 Subject: [PATCH 33/61] Improve tile Signed-off-by: Daniel Hardman --- text/protocols/tictactoe-1.0/tile.png | Bin 42849 -> 48086 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/text/protocols/tictactoe-1.0/tile.png b/text/protocols/tictactoe-1.0/tile.png index bca132034bb6903bc96d2baa410236b0eb0e1ad0..649e05e710fe974fc380204a8c3bb865c050f036 100644 GIT binary patch delta 44574 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

rwnOKoM}13X+c&G|Iw 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 U#EYwYTmye_IaS#*Y16>}0b7?|X#fBK delta 38428 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 Date: Fri, 5 Apr 2019 20:34:27 -0600 Subject: [PATCH 34/61] Improve state machine and tests Signed-off-by: Daniel Hardman --- text/protocols/tictactoe-1.0/state_machine.py | 12 +- .../tictactoe-1.0/test_state_machine.py | 164 ++++++++++++++---- 2 files changed, 142 insertions(+), 34 deletions(-) diff --git a/text/protocols/tictactoe-1.0/state_machine.py b/text/protocols/tictactoe-1.0/state_machine.py index 2880c09e3..c6d0e65e4 100644 --- a/text/protocols/tictactoe-1.0/state_machine.py +++ b/text/protocols/tictactoe-1.0/state_machine.py @@ -20,16 +20,17 @@ def handle(self, event): s = self.state if event == SEND_MOVE_EVENT: if s in [None, MY_MOVE_STATE]: - self._transition_to(THEIR_MOVE_STATE, event) + self._transition_to(WRAP_UP_STATE if self.logic.is_done() else THEIR_MOVE_STATE, event) else: raise AssertionError(f"Programmer error; I can't move when state = {STATE_NAMES[s]}.") elif event == RECEIVE_MOVE_EVENT: if s in [None, THEIR_MOVE_STATE]: self._transition_to(WRAP_UP_STATE if self.logic.is_done() else MY_MOVE_STATE, event) else: - self._on_error(f"You can't move when state = {STATE_NAMES[s]}") + self._on_error(f"Other party can't move when state = {STATE_NAMES[s]}") elif event in [SEND_OUTCOME_EVENT, RECEIVE_OUTCOME_EVENT]: - self._transition_to(DONE_STATE, event) + if s != DONE_STATE: + self._transition_to(DONE_STATE, event) else: raise AssertionError("Illegal event %d." % event) @@ -39,8 +40,9 @@ def _on_error(self, msg): def _transition_to(self, state, event): if self.pre: - if not self.pre(self, state, event): + # Ask permission before transitioning + if not self.pre(state, event): return self.state = state if self.post: - self.post(self, state, event) \ No newline at end of file + self.post(state, event) \ No newline at end of file diff --git a/text/protocols/tictactoe-1.0/test_state_machine.py b/text/protocols/tictactoe-1.0/test_state_machine.py index e78608b4f..334edf4b4 100644 --- a/text/protocols/tictactoe-1.0/test_state_machine.py +++ b/text/protocols/tictactoe-1.0/test_state_machine.py @@ -6,26 +6,66 @@ class NeverDone: def is_done(self): return False +class BeDone: + def is_done(self): + return True + @pytest.fixture -def basic(): +def sm(): return StateMachine(NeverDone()) -def test_no_state_on_start(basic): - assert basic.state is None +def test_no_state_on_start(sm): + assert sm.state is None + +def test_my_move_first(sm): + sm.handle(SEND_MOVE_EVENT) + assert sm.state == THEIR_MOVE_STATE + +def test_their_move_first(sm): + sm.handle(RECEIVE_MOVE_EVENT) + assert sm.state == MY_MOVE_STATE -def test_my_move_first(basic): - basic.handle(SEND_MOVE_EVENT) - assert basic.state is THEIR_MOVE_STATE +def test_illegal_move_by_me(sm): + sm.handle(SEND_MOVE_EVENT) + # Sending a move when it's the other person's turn + # is our programmer error, so it should assert. + with pytest.raises(AssertionError): + sm.handle(SEND_MOVE_EVENT) + +def test_wrapup_from_them(sm): + sm.state = THEIR_MOVE_STATE + sm.logic = BeDone() + sm.handle(RECEIVE_MOVE_EVENT) + assert sm.state == WRAP_UP_STATE + sm.handle(SEND_OUTCOME_EVENT) + assert sm.state == DONE_STATE -def test_their_move_first(basic): - basic.handle(RECEIVE_MOVE_EVENT) - assert basic.state is MY_MOVE_STATE +def test_wrapup_from_me(sm): + sm.state = MY_MOVE_STATE + sm.logic = BeDone() + sm.handle(SEND_MOVE_EVENT) + assert sm.state == WRAP_UP_STATE + sm.handle(SEND_OUTCOME_EVENT) + assert sm.state == DONE_STATE -def test_illegal_move_by_me(basic): - basic.handle(SEND_MOVE_EVENT) - # This is a programmer error, so it should assert. +def test_send_move_in_wrapup(sm): + sm.state = WRAP_UP_STATE + # Sending a move when it's time to send an outcome + # is our programmer error, so this should assert. with pytest.raises(AssertionError): - basic.handle(SEND_MOVE_EVENT) + sm.handle(SEND_MOVE_EVENT) + +def test_receive_move_in_wrapup(sm): + sm.state = WRAP_UP_STATE + # Receiving a move when it's time to send an outcome + # is a programmer error on the other side. It shouldn't + # assert in our code, but should generate an error. + # This is an error by the other party, so it should + # trigger on_error. + sm.on_error = ErrorHandler() + sm.handle(RECEIVE_MOVE_EVENT) + assert bool(sm.on_error.msg) + assert sm.state == WRAP_UP_STATE class ErrorHandler: def __init__(self): @@ -34,25 +74,91 @@ def __init__(self): def __call__(self, msg): self.msg = msg -def test_illegal_move_by_them(basic): +def test_illegal_move_by_them(sm): # This is an error by the other party, so it should # trigger on_error. - basic.on_error = ErrorHandler() - basic.handle(RECEIVE_MOVE_EVENT) - assert basic.on_error.msg is None - assert basic.state == MY_MOVE_STATE - basic.handle(RECEIVE_MOVE_EVENT) - assert basic.on_error.msg is not None - assert basic.state == MY_MOVE_STATE + sm.on_error = ErrorHandler() + sm.handle(RECEIVE_MOVE_EVENT) + assert sm.on_error.msg is None + assert sm.state == MY_MOVE_STATE + sm.handle(RECEIVE_MOVE_EVENT) + assert bool(sm.on_error.msg) + assert sm.state == MY_MOVE_STATE + +def test_early_exit_by_me(sm): + sm.handle(RECEIVE_MOVE_EVENT) + sm.handle(SEND_OUTCOME_EVENT) + assert sm.state == DONE_STATE + +def test_early_exit_by_them(sm): + sm.handle(SEND_MOVE_EVENT) + sm.handle(SEND_OUTCOME_EVENT) + assert sm.state == DONE_STATE + +def test_unrecognized_event(sm): + with pytest.raises(AssertionError): + sm.handle(25) + +def test_event_while_done(sm): + for i in range(len(EVENT_NAMES)): + sm.state = DONE_STATE + sm.on_error = ErrorHandler() + if i == SEND_MOVE_EVENT: + with pytest.raises(AssertionError): + sm.handle(i) + assert sm.on_error.msg is None + elif i in [SEND_OUTCOME_EVENT, RECEIVE_OUTCOME_EVENT]: + # should be ignored + sm.handle(i) + assert sm.on_error.msg is None + else: #i == RECEIVE_MOVE_EVENT: + sm.handle(i) + assert bool(sm.on_error.msg) + +class HookHandler: + def __init__(self, response): + self.event = None + self.response = response + self.state = None -def test_early_exit_by_me(basic): - basic.handle(RECEIVE_MOVE_EVENT) - basic.handle(SEND_OUTCOME_EVENT) - assert basic.state == DONE_STATE + def __call__(self, state, event): + self.state = state + self.event = event + return self.response -def test_early_exit_by_them(basic): - basic.handle(SEND_MOVE_EVENT) - basic.handle(SEND_OUTCOME_EVENT) - assert basic.state == DONE_STATE +def test_pre_hooks_allow(sm): + for i in range(DONE_STATE): + sm.state = i + sm.pre = HookHandler(True) + sm.handle(SEND_OUTCOME_EVENT) + # Because we're allowing a transition, the pre hook should + # be called with old state, but now we should have new state. + assert sm.pre.state != i + assert sm.state == sm.pre.state + assert sm.pre.event == SEND_OUTCOME_EVENT +def test_pre_hooks_deny(sm): + for i in range(DONE_STATE): + sm.state = i + # This hook handler should refuse to allow us to transition. + sm.pre = HookHandler(False) + sm.post = HookHandler(None) + sm.handle(SEND_OUTCOME_EVENT) + # Because we're denying a transition, the pre hook should + # be called with new state, and we should still have old state. + assert sm.state == i + assert sm.pre.state != i + assert sm.pre.event == SEND_OUTCOME_EVENT + # We should never have called the post event. + assert sm.post.event == None +def test_post_hooks(sm): + for i in range(DONE_STATE): + sm.state = i + sm.post = HookHandler(None) + sm.handle(SEND_OUTCOME_EVENT) + # Because we're allowing a transition, the post hook should + # be called with new state. + assert sm.state != i + assert sm.post.state == sm.state + assert sm.post.event == SEND_OUTCOME_EVENT From fc7a602835604c073291cba12b0e41ec5cc6745e Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 20:48:11 -0600 Subject: [PATCH 35/61] Tweak images Signed-off-by: Daniel Hardman --- text/protocols/tictactoe-1.0/README.md | 2 +- text/protocols/tictactoe-1.0/move-1.json | 2 +- text/protocols/tictactoe-1.0/move-1.png | Bin 28927 -> 28984 bytes text/protocols/tictactoe-1.0/move-2.json | 2 +- text/protocols/tictactoe-1.0/move-2.png | Bin 26186 -> 25843 bytes text/protocols/tictactoe-1.0/move-3.json | 2 +- text/protocols/tictactoe-1.0/move-3.png | Bin 26079 -> 25916 bytes text/protocols/tictactoe-1.0/move-4.json | 2 +- text/protocols/tictactoe-1.0/move-4.png | Bin 26048 -> 25912 bytes .../tictactoe-1.0/player-state-machine.png | Bin 46311 -> 53680 bytes 10 files changed, 5 insertions(+), 5 deletions(-) diff --git a/text/protocols/tictactoe-1.0/README.md b/text/protocols/tictactoe-1.0/README.md index 708cf19dd..9e4272e84 100644 --- a/text/protocols/tictactoe-1.0/README.md +++ b/text/protocols/tictactoe-1.0/README.md @@ -151,7 +151,7 @@ values between `X` and `O`. Subsequent messages in the game use the [message threading]( https://github.com/hyperledger/indy-hipe/pull/30) mechanism where the -`@id` of the first `move` becomes the `@thread.thid` for the duration +`@id` of the first `move` becomes the `~thread.thid` for the duration of the game. An evolving sequence of `move` messages might thus look like this, diff --git a/text/protocols/tictactoe-1.0/move-1.json b/text/protocols/tictactoe-1.0/move-1.json index 2a4f2b2b3..dabc716c4 100644 --- a/text/protocols/tictactoe-1.0/move-1.json +++ b/text/protocols/tictactoe-1.0/move-1.json @@ -4,6 +4,6 @@ "@id": "518be002-de8e-456e-b3d5-8fe472477a86", "me": "X", "moves": ["X:B2"], - "comment": "Let's play tic-tac-to. I'll be X. I pick cell B2." + "comment": "Let's play tic-tac-toe. I'll be X. I pick cell B2." } diff --git a/text/protocols/tictactoe-1.0/move-1.png b/text/protocols/tictactoe-1.0/move-1.png index 22510bba738242ef347ab1a1b1fa0f30b7137052..b165a50415e2873cafe312f5def86219e2155465 100644 GIT binary patch delta 25285 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 diff --git a/text/protocols/tictactoe-1.0/move-2.json b/text/protocols/tictactoe-1.0/move-2.json index 3aec687b3..8b1724d0f 100644 --- a/text/protocols/tictactoe-1.0/move-2.json +++ b/text/protocols/tictactoe-1.0/move-2.json @@ -1,7 +1,7 @@ { "@type": "did:sov:SLfEi9esrjzybysFxQZbfq;spec/tictactoe/1.0/move", - "@thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "myindex": 0 }, + "~thread": { "thid": "518be002-de8e-456e-b3d5-8fe472477a86", "sender_order": 0 }, "moves": ["X:B2", "O:A1"], "me": "O" } diff --git a/text/protocols/tictactoe-1.0/move-2.png b/text/protocols/tictactoe-1.0/move-2.png index a9ea3aa00324234ab707a75aee23f615b1383a6a..7bc25a5dec8deb97e1c28cb9df599bed4ee27ef8 100644 GIT binary patch delta 22202 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 Q;1!6nf`)wQ6Z4?|0geV(KmY&$ delta 22382 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 b!2y>DSLi_&o<9@(0Mk_0yZPq2P58e6MkJHy diff --git a/text/protocols/tictactoe-1.0/player-state-machine.png b/text/protocols/tictactoe-1.0/player-state-machine.png index 49de62dd7c6b13daf9e9e5ed4e04834aa8c297d3..141d04e3d9556e318fa2bc3e5dda0053ac32b13f 100644 GIT binary patch literal 53680 zcmeEtby(Khw(f`03MiriQqtYs-Q6J4-Q6XqD3VeF64H%Iw}B!kAT5p3Ee%q4e6F?k zUi;jA&bjA4_x`un^DKq$o4+~dZ_F{?@s4*)AFHd%;b0SEBM=B21$k*r1mZ#h{Je{a z4u5v|mh&PI1PA`w`ktC*J`}F*F4lIARurCou2vLQzIN6Kgzs2+nw>M1Q1XLwkLxX{ zJ@4Ip1rROa#=#+U)B*#k6&Ttt9KR(?UcJ1HYh(H?-+lOft2&cOcHt8WV94z&AD0eKPJoCFXTx(`nXbbJTG>f%%a&DkbL$9a?gb z=I~v7E_o`IvxP;U$CbHU`3GBv9%~aLpT)xTdU{{&>;%dFBEvpND_b~~i<;_?Iuh_! zyC0mTao8L+Ev7FjeSSRR@~X+_AfVU5i%XAEXEH$JOr(7$@>;Zd!Q$&KpV`8njUv?$i>Ftjf($Ii7@VyWx5cPOvxvsM#1 z=yz~wIp|w_M1^8zHP|1Ih4S)P;J}!`g-Yb+4#!_`m7{91FxE)5q*!2 z4Bqv&RcGe|k$vIs>WXw(?kjeMS#AsY!_JLI$#-0uPGf}HUhns;9F#o}<2>j!xU^Zu zU~wc+dD=xBap(B*Ra80|0V)d)49=-U6l_68o7RZuxtxX1kFMH9;&&R-EB4@a5fXi& zYj=OIw-Ic$LB6w~cviQ4<6LLqx#q$2r{`KLQ>n*7E@GBWy%>A_2^3y0%vT1`zOf!O zp?a^WtB!f#7+TPOL77W6#g_}3f9_HBU|i@kY0{PXj9%8slGyhTzUfgmOZHuoPU^A> z>IkH>n7(1S;A(VsMLzA(a8+x`=3^7SC0sMU@tEVOOcz>jfrs_H644{xia1NC1f5$f z5%MDz9j`|O=oUzOMSZe(N^xd-%7by%EJo*J235)UT*hq{`gC!*xTfuNi=(v^vx2&Z z7-*`9`j_2gt5$uya;qolbMNXBwHT7~w&Nc~er$EOFc?k$~e)rmmN2AqsE&+*4VvfBquC)j;^jL~QiN zwyE-pNP$QAyg`*oVfPIW6SN-!W^4MY&8T*VPPN1J9bNODOPGo#H!oXXCx~=gOsx}p zBK$gAa^;x^^)Si=QTjHW59%o2)6Z&63YQSKi!WyFp!ttb=X>6|nxkuIlr&ZL*ylcm ztc}Pp?a>?_m#9atv13oVe|c=#Xf<7TJzL3a4}Q6(>Syckg%$YnHuI{e3V-nGXF=f`Z<{^zdzEHZS{D)*$zFxZy!YR7h{PAs^R_O>#Joo2yBtBZzV$)de>W3CDTSkcRVl(?*!tg zPAsDOv)Rfwh5uMx<%+o_A}zPq8|Ak{6i|OqsvM84dmA(KZDC{Q=Q1zNHQ8NyZbOGD zw1DgldFGc#tuiWp=r_HwOr^?|2aE8&&Zx_(Ym%c!e0+-0Z?&#n`od(W&XaB`0;SyH z6DGN;oE4_n%^@X^4_d}oSw<^9G@{ty)TE?}+ZHzIyRZ($DVoi_j^TSVFkyUW>N~>0 zQ(D=mydrNDr9zXi0&%@?Z!5Gr^~y+;$eoSwil5oHSJCWI$nmJ&DLf_S%L^E19lUpM zDA)j<1J#Y-7QLR~Ypm`mLE1pOTk-{QLXqX03b{EL;!R~q<3A>9HNTirdBr013n� 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 literal 46311 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 f4f0G)KHXxLzb#j* Date: Fri, 5 Apr 2019 20:53:05 -0600 Subject: [PATCH 36/61] Tweak some comments about localization Signed-off-by: Daniel Hardman --- text/protocols/tictactoe-1.0/README.md | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/text/protocols/tictactoe-1.0/README.md b/text/protocols/tictactoe-1.0/README.md index 9e4272e84..bf15f2341 100644 --- a/text/protocols/tictactoe-1.0/README.md +++ b/text/protocols/tictactoe-1.0/README.md @@ -242,6 +242,10 @@ hand-coded AI that can play the game when plugged into an agent (see [ai.py](ai.py)), and a set of unit tests that prove correctness (see [test_tictactoe.py](test_tictactoe.py)). +A full implementation of the state machine is provided as well; see +[state_machine.py](state_machine.py) and [test_state_machine.py]( +test_state_machine.py). + The game can be played interactively by running `python game.py`. ### Localization @@ -252,7 +256,7 @@ instead of a value selected from an enumeration and identified by `code` for use with message catalogs. This means the only approach to localize `move` or `outcome` messages is to submit `comment` fields to an automated translation service. Because the locale of `tictactoe` messages is not predefined, each -message must be decorated with `@l10n.locale` to make automated translation +message must be decorated with `~l10n.locale` to make automated translation possible. There is one other way that localization is relevant to this protocol: in error @@ -263,30 +267,30 @@ message type rather than through a special message type that's part of the below to make this protocol's specific error strings localizable. Thus, all instances of this message family carry localization metadata -in the form of an implicit `@l10n` decorator that looks like this: +in the form of an implicit `~l10n` decorator that looks like this: [![~l10n](~l10n.png)](~l10n.json) This JSON fragment is checked in next to the narrative content of this -HIPE as [@l10n.json](@l10n.json), for easy machine parsing. +HIPE as [~l10n.json](~l10n.json), for easy machine parsing. -Individual messages can use the `@l10n` decorator to supplement or override +Individual messages can use the `~l10n` decorator to supplement or override these settings. For more information about localization concepts, see the [HIPE about localized -messages](https://github.com/hyperledger/indy-hipe/blob/318f265d508a3ddf1da7d91c79ae4ae27ab9142b/text/localized-messages/README.md). +messages](https://github.com/hyperledger/indy-hipe/blob/569357c6/text/localized-messages/README.md#message-codes-and-catalogs). ### Message Catalog To facilitate localization of error messages, all instances of this message -family assume the following catalog in their `@l10n` data: +family assume the following catalog in their `~l10n` data: [![catalog](catalog.png)](catalog.json) When referencing this catalog, please be sure you have the correct version. The official, immutable URL to this version of the catalog file is: - https://github.com/hyperledger/indy-hipe/blob/a0d57d1f589945de58d8f7711b081500026b8713/text/tictactoe-protocol/catalog.json + https://github.com/hyperledger/indy-hipe/blob/fc7a6028/text/tictactoe-protocol/catalog.json This JSON fragment is checked in next to the narrative content of this HIPE as [catalog.json](catalog.json), for easy machine parsing. The catalog @@ -294,6 +298,6 @@ currently contains localized alternatives only for English. Other language contributions would be welcome. For more information, see the [Message Catalog section of the localization HIPE]( -https://github.com/hyperledger/indy-hipe/blob/318f265d508a3ddf1da7d91c79ae4ae27ab9142b/text/localized-messages/README.md#message-codes-and-catalogs +https://github.com/hyperledger/indy-hipe/blob/569357c6/text/localized-messages/README.md#message-codes-and-catalogs ). From 25ec30c675b257209c54d91a2260ed82f37b06a6 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 21:19:28 -0600 Subject: [PATCH 37/61] Break into sub docs Signed-off-by: Daniel Hardman --- text/protocols/README.md | 355 ++--------------------------- text/protocols/mturi-structure.png | Bin 0 -> 14607 bytes text/protocols/template.md | 260 +++++++++++++++++++++ text/protocols/uris.md | 78 +++++++ 4 files changed, 353 insertions(+), 340 deletions(-) create mode 100644 text/protocols/mturi-structure.png create mode 100644 text/protocols/template.md create mode 100644 text/protocols/uris.md diff --git a/text/protocols/README.md b/text/protocols/README.md index 307bb48d6..630d3c86e 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -56,14 +56,15 @@ stateful interactions like: ### Agent Design -Protocols are the key unit of interoperable extensibility in agents. To add a +Protocols are *the* key unit of interoperable extensibility in agents. To add a new interoperable feature to an agent, give it the ability to handle a new protocol. When agents receive messages, they map the messages to a __protocol handler__ -and possibly to an __interaction state__. The protocol handler is code that -knows the rules of a particular protocol; the interaction state tracks -progress through an interaction. For more information, see the [agents explainer HIPE]( +and possibly to an __interaction state__ that was previous persisted. The +protocol handler is code that knows the rules of a particular protocol; the +interaction state tracks progress through an interaction. For more information, +see the [agents explainer HIPE]( https://github.com/hyperledger/indy-hipe/blob/36913b80/text/0002-agents/README.md#general-patterns) and the [DIDComm explainer HIPE]( https://github.com/hyperledger/indy-hipe/blob/b0708395/text/0003-did-comm/README.md). @@ -98,7 +99,6 @@ but [the introduction superprotocol completes when the connection subprotocol https://github.com/hyperledger/indy-hipe/blob/790987b9/text/introductions/README.md#goal). ![super- and async subprotocols](super-sub-async.png) - ### Message Families @@ -118,349 +118,24 @@ primary message family. A protocol has the following ingredients: -* [_name and version_](#name-and-version-under-tutorial) -* [_messages (primary message family)_](#messages-under-tutorial) -* [_adopted messages_](#adopted-messages) -* [_roles_](#roles-under-tutorial) -* [_state_ and _sequencing rules_](#state-under-tutorial) +* [_name and version_](template.md#name-and-version-under-tutorial) +* [_messages (primary message family)_](template.md#messages-under-tutorial) +* [_adopted messages_](template.md#adopted-messages) +* [_roles_](template.md#roles-under-tutorial) +* [_state_ and _sequencing rules_](template.md#state-under-tutorial) * _events that can change state_ -- notably, _messages_, but also _errors_, _timeouts_, and so forth * _constraints that provide trust and incentives_ ### How to define a protocol or message family -To define a protocol, write a HIPE. The [tictactoe 1.0 protocol]( -tictactoe-1.0/README.md) is attached to this HIPE as an example. +To define a protocol, write a HIPE. Specific instructions for +protocol HIPEs, and a discussion about the theory behind detailed +protocol concepts, are given in the [Template for Protocol HIPEs]( +template.md). The [tictactoe 1.0 protocol]( +tictactoe-1.0/README.md) is also attached to this HIPE as an example. [![tictactoe protocol](tictactoe-1.0/tile.png)](tictactoe-1.0/README.md) -A protocol HIPE conforms to general HIPE patterns, but includes some -specific substructure: - -#### "Name and Version" under "Tutorial" - -The first section of a protocol HIPE, under "Tutorial", should be called -"Name and Version". It should specify the official name of the protocol -and its version. - -Protocol names are conventionally lower_snake_case (especially in URIs), -but are compared case-insensitively and ignoring punctuation. This means -that all of the following protocol names are considered identical in -comparison, and can be used interchangeably, depending on what's appropriate -for a given context (a user-friendly doc vs. CSS vs. python class vs. java class): - -* `Let's Do Lunch!` -* `lets-do-lunch` -* `lets_do_lunch` -* `LetsDoLunch` - -##### URI representation - -The name of the protocol and its version must be encoded in a __message type -URI__ (MTURI) that identifies message types unambiguously. The format of the -MTURI is important because it is is parsed by agents that will map messages to -handlers--basically, code will look at this string and say, "Do I have -something that can handle this message type inside protocol X version Y?" -Therefore, it is a critical consideration for interoperability. The URI MUST -be built as follows: - -```ABNF -message-type-uri = doc-uri delim protocol-name - "/" protocol-version "/" message-type-name -delim = "?" / "/" / "&" / ":" / ";" / "=" -protocol-name = identifier -protocol-version = semver -message-type-name = identifier -identifier = alpha *(*(alphanumeric / "_" / "-" / ".") alphanumeric) -``` - -It can be loosely matched and parsed with the following regex: - - (.*?)([a-z0-9._-]+)/(\d[^/]*)/[a-z0-9._-]+$ - -A match will have captures groups of (1) = `doc-uri`, (2) = `protocol-name`, -(3) = `protocol-version`, and (4) = `message-type-name`. - -The goals of this URI are, in descending priority: - -* Code can use the URI to route messages to protocol -handlers using semver rules. - -* The definition of a protocol should be tied to the URI such -that it is semantically stable. This means that once version 1.0 -of a protocol is defined, its definition should not change in -ways that would break implementations. (See the [semver](#semver) -section for more on this.) - -* Developers can discover information about novel protocols, using -the URI to browse or search the web. - -The `doc-uri` portion is any URI that exposes documentation about -protocols. A developer should be able to browse to that URI and use human intelligence -to look up the named and versioned protocol. Optionally and preferably, the -full URI may produce a page of documentation about the specific message type, -with no human mediation involved. - -A shorter URI that follows the same conventions but lacks the -`message-type-name` portion is called a __protocol identifier URI__ -(PIURI). Its loose matcher regex is: - - (.*?)([a-z0-9._-]+)/(\d[^/]*)/?$ - -Some examples of valid MTURIs and PIURIs include: - -* `http://example.com/protocols?which=lets_do_lunch/1.0/` (PIURI with fully automated lookup of protocol docs) -* `http://example.com/message_types?which=lets_do_lunch/1.0/proposal` (MTURI) -* `https://github.com/hyperledger/indy-hipe/tree/d7879f5e/text:trust_ping/1.0/ping` - (MTURI). Note that this URI returns a 404 error if followed directly--but - per rules described above, the developer should browse to the doc root - ([https://github.com/hyperledger/indy-hipe/tree/d7879f5e/text]( - https://github.com/hyperledger/indy-hipe/tree/d7879f5e/text - )) and look for documentation on the `trust_ping/1.0` protocol. -* `did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/trust_ping/1.0/ping` (MTURI) This - uses a DID reference to look up an endpoint named `spec` that serves - information about protocols. (The exact syntax of DID references--URIs - where the DID functions like a domain name, and additional info is - fetched from a DID Doc in much the same way IP address and hostname - definitions are fetched from a DNS record--is still being finalized. - See the latest [DID Spec](https://w3c-ccg.github.io/did-spec) for details.) - -##### Semver Rules - -[Semver](http://semver.org) rules apply in cascading fashion to versions -of protocols and individual message types. Individual -message types are versioned as part of a coherent protocol, which -constitutes a [public API in the semver sense](https://semver.org/#spec-item-1). -An individual message type can add new optional fields, or deprecate -existing fields, [with only a change to its message family's minor -version](https://semver.org/#spec-item-7). -Similarly, a protocol can add new message types (or [adopted -ones](#adopted-messages)) with only a change -to the minor version. It can announce deprecated fields. It can add additional -semantics around optional decorators. These are all backwards-compatible -changes, also requiring only a minor version update. - -Changes that remove fields or message types, that make formerly optional -things required, or that alter the state machine in incompatible -ways, must result in an [increase of the major version of the protocol/primary -message family](https://semver.org/#spec-item-8). - -#### "Key Concepts" under "Tutorial" - -This is the first subsection under "Tutorial". It is short--a paragraph or -two. It defines terms and describes the flow of the interaction at a very -high level. Key preconditions should be noted (e.g., "You can't issue a -credential until you have completed the _connection_ protocol first"), as -well as ways the protocol can start and end, and what can go wrong. The -section might also talk about timing constraints and other assumptions. -After reading this section, a developer should know what problem your -protocol solves, and should have a rough idea of how the protocol works in -its simpler variants. - -#### "Roles" under "Tutorial" - -This is the next subsection. It gives a formal name to the roles in the -protocol, says who and how many can play each role, and describes constraints -associated with those roles (e.g., "You can only issue a credential if you -have a DID on the public ledger"). The issue of qualification for roles can -also be explored (e.g., "The holder of the credential must be known to the -issuer"). - -The formal names for each role are important because they are used when -[agents discover one another's capabilities]( -https://github.com/hyperledger/indy-hipe/pull/73); an agent doesn't -just claim that it supports a protocol; it makes a claim about which -*roles* in the protocol it supports. An agent that supports credential -issuance and an agent that supports credential holding may have very -different features, but they both use the _credential-issuance_ protocol. -By convention, role names use lower-kebab-case but are compared -case-insensitively and ignoring punctuation. - -#### "States" under "Tutorial" - -This section lists the possible states that exist for each role. It also -enumerates the events (often but not always messages) that can occur, -including errors, and what should happen to state as a result. A formal -representation of this information is provided in a _state machine matrix_. -It lists events as columns, and states as rows; a cell answers the -question, "If I am in state X (=row), and event Y (=column) occurs, -what happens to my state?" The [Tic Tac Toe example](tictactoe-1.0/README.md#states) -is typical. - -[Choreography Diagrams]( -https://www.visual-paradigm.com/guide/bpmn/bpmn-orchestration-vs-choreography-vs-collaboration/#bpmn-choreography) -from [BPMN](#bpmn) are good artifacts here, as are [PUML sequence diagrams]( -http://plantuml.com/sequence-diagram) and [UML-style state machine diagrams](http://agilemodeling.com/artifacts/stateMachineDiagram.htm). -The matrix form is nice because it forces an exhaustive analysis of every -possible event. The diagram styles are often simpler to create and consume, -and the PUML and BPMN forms have the virtue that they can support line-by-line -diffs when checked in with source code. However, they don't offer an -easy way to see if all possible flows have been considered; what they may -NOT describe isn't obvious. This--and the freedom from fancy tools--is why -the matrix form is used in many early HIPEs. We leave it up to -the community to settle on whether it wants to strongly recommend specific -diagram types. - -The formal names for each state are important, as they are used in [`ack`s]( https://github.com/hyperledger/indy-hipe/pull/77) -and [`problem-report`s](https://github.com/hyperledger/indy-hipe/pull/65)). -For example, a `problem-report` message declares which state the sender -arrived at because of the problem. This helps other parties in an interaction -to react to errors with confidence. Formal state names are also used in the -agent test suite, in log messages, and so forth. - -By convention, state names use lower-kebab-case but are compared -case-insensitively and ignoring punctuation. - -Some protocols have only one role, and thus only one state machine. -But in many protocols, different participants may have different state -machines. This section has been neglected in many early efforts at protocol -definition, and its omission is a big miss. Analyzing all possible states -and events for all roles leads to robustness; skipping the analysis leads -to fragility. - -##### State machines - -Writing a formal state machine to accompany the state matrix of a protocol -is not required, but it is a best practice. For developers who have not worked -with state machines before, this may sound intimidating, but it is actually -quite easy, and it provides a clean encapsulation of logic that would otherwise -be a bunch of conditionals scattered throughout the code. It also provides a -convenient way to load state later, when a message arrives for an interaction -that is only partly complete. And it makes formal testing for completeness and -security much easier. - -The introduction HIPE includes a sample state machine. [TODO: get link] - -For an extended example of how state machines can be used, including in nested -protocols, and with hooks that let custom processing happen at each point in -a flow, see [https://github.com/dhh1128/distributed-state-machine]( -https://github.com/dhh1128/distributed-state-machine/blob/master/README.md). - -##### Processing Points - -A protocol definition describes key points in the flow where business logic -can attach. Some of these __processing points__ are obvious, because the -protocol calls for a decision to be made. Others are implicit. Some examples -include: - -* The _beginning_ and _end_. -* The _launch of a subprotocol_. -* The _completion of a subprotocol_, or the _subprotocol changing state_. -* _Sending a message_. (For each send, the sender could choose to go silent -and abandon the interaction instead, though many -protocols would ask for notification to be emitted as best practice.) -* (Receiving a message_. (Requires validation, then integration -with policy and processes internal to the agent and its sovereign domain, -to move the interaction forward.) - -When a protocol is modeled with a state machine, each of these processing -points can be hooked without cluttering the state machine itself. This is -a nice encapsulation pattern. - -#### "Messages" under "Tutorial" - -If there is a message family associated with this protocol, this -section describes each member of it. It should also note the names and -versions of messages from other message families that are used by the -protocol (e.g., an [`ack`]( https://github.com/hyperledger/indy-hipe/pull/77) -or a [`problem-report`](https://github.com/hyperledger/indy-hipe/pull/65)). -Typically this section is written as a narrative, showing each message -type in the context of an end-to-end sample interaction. All possible -fields may not appear; an exhaustive catalog is saved for the "Reference" -section. - -Sample messages that are presented in the narrative should also be checked -in next to the markdown of the HIPE, in [DIDComm Plaintext format]( -https://github.com/hyperledger/indy-hipe/blob/master/text/0026-agent-file-format/README.md#agent-plaintext-messages-ap). - -##### Adopted Messages - -Many protocols should use general-purpose messages such as [`ack`]( -https://github.com/hyperledger/indy-hipe/pull/77) and [`problem-report`]( -https://github.com/hyperledger/indy-hipe/pull/65)) at certain points in -an interaction. This reuse is strongly encouraged because it helps us avoid -defining redundant message types--and the code to handle them--over and -over again (see [DRY principle](https://en.wikipedia.org/wiki/Don't_repeat_yourself)). - -However, using messages with generic values of `@type` (e.g., `"@type": -"did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/notification/1.0/ack"`) -introduces a challenge for agents as they route messages to their internal -routines for handling. We expect internal handlers to be organized around -protocols, since a protocol is a discrete unit of business value as well -as a unit of testing in our agent test suite. Early work on agents has -gravitated towards pluggable, routable protocols as a unit of code -encapsulation and dependency as well. Thus the natural routing question -inside an agent, when it sees a message, is "Which protocol handler should -I route this message to, based on its @type?" A generic `ack` can't be -routed this way. - -Therefore, we allow a protocol to __adopt__ messages into its namespace. -This works very much like python's `from module import symbol` syntax. -It changes the `@type` attribute of the adopted message. Suppose a `rendezvous` -protocol is identified by the URI `did:sov:mYhnRbzCbsjhiQzDAstHgU;spec/rendezvous/2.0`, -and its definition announces that it has adopted generic 1.x `ack` -messages. When such `ack` messages are sent, the `@type` should now use -the alias defined inside the namespace of the `rendezvous` protocol: - -![diff on @type caused by adoption](adoption.png) - -Adoption should be declared in an "Adopted" subsection of "Messages" in -a protocol HIPE. When adoption is specified, it should include a __minimum -adopted version__ of the adopted message type: "This protocol adopts -`ack` with version >= 1.4". All versions of the adopted message that share -the same major number should be compatible, given the [semver rules](#semver-rules) -noted above. - -#### "Constraints" under "Tutorial" - -Many protocols have constraints that help parties build trust. -For example, in buying a house, the protocol includes such things as -commission paid to realtors to guarantee their incentives, title insurance, -earnest money, and a phase of the process where a home inspection takes -place. If you are documenting a protocol that has attributes like -these, explain them here. If not, the section can be omitted. - -#### "Messages" under "Reference" - -Unless the "Messages" section under "Tutorial" covered everything that -needs to be known about all message fields, this is where the data type, -validation rules, and semantics of each field in each message type are -details. Enumerating possible values, or providing ABNF or regexes is -encouraged. Following conventions such as [those for date- -and time-related fields](https://github.com/hyperledger/indy-hipe/pull/76) -can save a lot of time here. - -Each message type should be associated with one or more roles in the -protocol. That is, it should be clear which roles can send and receive -which message types. - -#### "Examples" under "Reference" - -This section is optional. It can be used to show alternate flows through -the protocol. - -#### "Collateral" under "Reference" - -This section is optional. It could be used to reference files, code, -relevant standards, oracles, test suites, or other artifacts that would -be useful to an implementer. In general, collateral should be checked in -with the HIPE. - -#### "Localization" under "Reference" - -If communication in the protocol involves humans, then localization of -message content may be relevant. Default settings for localization of -all messages in the protocol can be specified in an `l10n.json` file -described here and checked in with the HIPE. See ["Decorators at Message -Type Scope"](https://github.com/hyperledger/indy-hipe/blob/318f265d508a3ddf1da7d91c79ae4ae27ab9142b/text/localized-messages/README.md#decorator-at-message-type-scope) -in the [Localization HIPE](https://github.com/hyperledger/indy-hipe/pull/64). - -#### "Message Catalog" under "Reference" - -If the protocol has a formally defined catalog of codes (e.g., for errors -or for statuses), define them in this section. See ["Message Codes and -Catalogs"](https://github.com/hyperledger/indy-hipe/blob/318f265d508a3ddf1da7d91c79ae4ae27ab9142b/text/localized-messages/README.md#message-codes-and-catalogs) -in the [Localization HIPE](https://github.com/hyperledger/indy-hipe/pull/64). - ## Reference The [Tic-Tac-Toe 1.0 protocol]( diff --git a/text/protocols/mturi-structure.png b/text/protocols/mturi-structure.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6c3d13fa5bdddbf27169c5de0c2e590205e704 GIT binary patch literal 14607 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 UcT^E02#b)U#TCSg-xzxTFH&gxI{*Lx literal 0 HcmV?d00001 diff --git a/text/protocols/template.md b/text/protocols/template.md new file mode 100644 index 000000000..68b5520d5 --- /dev/null +++ b/text/protocols/template.md @@ -0,0 +1,260 @@ +# Template for Protocol HIPEs + +A protocol HIPE conforms to general HIPE patterns, but includes some +specific substructure: + +### "Name and Version" under "Tutorial" + +The first section of a protocol HIPE, under "Tutorial", should be called +"Name and Version". It should specify the official name of the protocol +and its version. + +Protocol names are conventionally lower_snake_case (especially in URIs), +but are compared case-insensitively and ignoring punctuation. This means +that all of the following protocol names are considered identical in +comparison, and can be used interchangeably, depending on what's appropriate +for a given context (a user-friendly doc vs. CSS vs. python class vs. java class): + +* `Let's Do Lunch!` +* `lets-do-lunch` +* `lets_do_lunch` +* `LetsDoLunch` + +##### URI representation + +##### Semver Rules + +[Semver](http://semver.org) rules apply in cascading fashion to versions +of protocols and individual message types. Individual +message types are versioned as part of a coherent protocol, which +constitutes a [public API in the semver sense](https://semver.org/#spec-item-1). +An individual message type can add new optional fields, or deprecate +existing fields, [with only a change to its message family's minor +version](https://semver.org/#spec-item-7). +Similarly, a protocol can add new message types (or [adopted +ones](#adopted-messages)) with only a change +to the minor version. It can announce deprecated fields. It can add additional +semantics around optional decorators. These are all backwards-compatible +changes, also requiring only a minor version update. + +Changes that remove fields or message types, that make formerly optional +things required, or that alter the state machine in incompatible +ways, must result in an [increase of the major version of the protocol/primary +message family](https://semver.org/#spec-item-8). + +### "Key Concepts" under "Tutorial" + +This is the first subsection under "Tutorial". It is short--a paragraph or +two. It defines terms and describes the flow of the interaction at a very +high level. Key preconditions should be noted (e.g., "You can't issue a +credential until you have completed the _connection_ protocol first"), as +well as ways the protocol can start and end, and what can go wrong. The +section might also talk about timing constraints and other assumptions. +After reading this section, a developer should know what problem your +protocol solves, and should have a rough idea of how the protocol works in +its simpler variants. + +### "Roles" under "Tutorial" + +This is the next subsection. It gives a formal name to the roles in the +protocol, says who and how many can play each role, and describes constraints +associated with those roles (e.g., "You can only issue a credential if you +have a DID on the public ledger"). The issue of qualification for roles can +also be explored (e.g., "The holder of the credential must be known to the +issuer"). + +The formal names for each role are important because they are used when +[agents discover one another's capabilities]( +https://github.com/hyperledger/indy-hipe/pull/73); an agent doesn't +just claim that it supports a protocol; it makes a claim about which +*roles* in the protocol it supports. An agent that supports credential +issuance and an agent that supports credential holding may have very +different features, but they both use the _credential-issuance_ protocol. +By convention, role names use lower-kebab-case but are compared +case-insensitively and ignoring punctuation. + +### "States" under "Tutorial" + +This section lists the possible states that exist for each role. It also +enumerates the events (often but not always messages) that can occur, +including errors, and what should happen to state as a result. A formal +representation of this information is provided in a _state machine matrix_. +It lists events as columns, and states as rows; a cell answers the +question, "If I am in state X (=row), and event Y (=column) occurs, +what happens to my state?" The [Tic Tac Toe example](tictactoe-1.0/README.md#states) +is typical. + +[Choreography Diagrams]( +https://www.visual-paradigm.com/guide/bpmn/bpmn-orchestration-vs-choreography-vs-collaboration/#bpmn-choreography) +from [BPMN](#bpmn) are good artifacts here, as are [PUML sequence diagrams]( +http://plantuml.com/sequence-diagram) and [UML-style state machine diagrams](http://agilemodeling.com/artifacts/stateMachineDiagram.htm). +The matrix form is nice because it forces an exhaustive analysis of every +possible event. The diagram styles are often simpler to create and consume, +and the PUML and BPMN forms have the virtue that they can support line-by-line +diffs when checked in with source code. However, they don't offer an +easy way to see if all possible flows have been considered; what they may +NOT describe isn't obvious. This--and the freedom from fancy tools--is why +the matrix form is used in many early HIPEs. We leave it up to +the community to settle on whether it wants to strongly recommend specific +diagram types. + +The formal names for each state are important, as they are used in [`ack`s]( https://github.com/hyperledger/indy-hipe/pull/77) +and [`problem-report`s](https://github.com/hyperledger/indy-hipe/pull/65)). +For example, a `problem-report` message declares which state the sender +arrived at because of the problem. This helps other parties in an interaction +to react to errors with confidence. Formal state names are also used in the +agent test suite, in log messages, and so forth. + +By convention, state names use lower-kebab-case but are compared +case-insensitively and ignoring punctuation. + +Some protocols have only one role, and thus only one state machine. +But in many protocols, different participants may have different state +machines. This section has been neglected in many early efforts at protocol +definition, and its omission is a big miss. Analyzing all possible states +and events for all roles leads to robustness; skipping the analysis leads +to fragility. + +##### State machines + +Writing a formal state machine to accompany the state matrix of a protocol +is not required, but it is a best practice. For developers who have not worked +with state machines before, this may sound intimidating, but it is actually +quite easy, and it provides a clean encapsulation of logic that would otherwise +be a bunch of conditionals scattered throughout the code. It also provides a +convenient way to load state later, when a message arrives for an interaction +that is only partly complete. And it makes formal testing for completeness and +security much easier. + +The introduction HIPE includes a sample state machine. [TODO: get link] + +For an extended example of how state machines can be used, including in nested +protocols, and with hooks that let custom processing happen at each point in +a flow, see [https://github.com/dhh1128/distributed-state-machine]( +https://github.com/dhh1128/distributed-state-machine/blob/master/README.md). + +##### Processing Points + +A protocol definition describes key points in the flow where business logic +can attach. Some of these __processing points__ are obvious, because the +protocol calls for a decision to be made. Others are implicit. Some examples +include: + +* The _beginning_ and _end_. +* The _launch of a subprotocol_. +* The _completion of a subprotocol_, or the _subprotocol changing state_. +* _Sending a message_. (For each send, the sender could choose to go silent +and abandon the interaction instead, though many +protocols would ask for notification to be emitted as best practice.) +* (Receiving a message_. (Requires validation, then integration +with policy and processes internal to the agent and its sovereign domain, +to move the interaction forward.) + +When a protocol is modeled with a state machine, each of these processing +points can be hooked without cluttering the state machine itself. This is +a nice encapsulation pattern. + +### "Messages" under "Tutorial" + +If there is a message family associated with this protocol, this +section describes each member of it. It should also note the names and +versions of messages from other message families that are used by the +protocol (e.g., an [`ack`]( https://github.com/hyperledger/indy-hipe/pull/77) +or a [`problem-report`](https://github.com/hyperledger/indy-hipe/pull/65)). +Typically this section is written as a narrative, showing each message +type in the context of an end-to-end sample interaction. All possible +fields may not appear; an exhaustive catalog is saved for the "Reference" +section. + +Sample messages that are presented in the narrative should also be checked +in next to the markdown of the HIPE, in [DIDComm Plaintext format]( +https://github.com/hyperledger/indy-hipe/blob/master/text/0026-agent-file-format/README.md#agent-plaintext-messages-ap). + +##### Adopted Messages + +Many protocols should use general-purpose messages such as [`ack`]( +https://github.com/hyperledger/indy-hipe/pull/77) and [`problem-report`]( +https://github.com/hyperledger/indy-hipe/pull/65)) at certain points in +an interaction. This reuse is strongly encouraged because it helps us avoid +defining redundant message types--and the code to handle them--over and +over again (see [DRY principle](https://en.wikipedia.org/wiki/Don't_repeat_yourself)). + +However, using messages with generic values of `@type` (e.g., `"@type": +"did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/notification/1.0/ack"`) +introduces a challenge for agents as they route messages to their internal +routines for handling. We expect internal handlers to be organized around +protocols, since a protocol is a discrete unit of business value as well +as a unit of testing in our agent test suite. Early work on agents has +gravitated towards pluggable, routable protocols as a unit of code +encapsulation and dependency as well. Thus the natural routing question +inside an agent, when it sees a message, is "Which protocol handler should +I route this message to, based on its @type?" A generic `ack` can't be +routed this way. + +Therefore, we allow a protocol to __adopt__ messages into its namespace. +This works very much like python's `from module import symbol` syntax. +It changes the `@type` attribute of the adopted message. Suppose a `rendezvous` +protocol is identified by the URI `did:sov:mYhnRbzCbsjhiQzDAstHgU;spec/rendezvous/2.0`, +and its definition announces that it has adopted generic 1.x `ack` +messages. When such `ack` messages are sent, the `@type` should now use +the alias defined inside the namespace of the `rendezvous` protocol: + +![diff on @type caused by adoption](adoption.png) + +Adoption should be declared in an "Adopted" subsection of "Messages" in +a protocol HIPE. When adoption is specified, it should include a __minimum +adopted version__ of the adopted message type: "This protocol adopts +`ack` with version >= 1.4". All versions of the adopted message that share +the same major number should be compatible, given the [semver rules](#semver-rules) +noted above. + +### "Constraints" under "Tutorial" + +Many protocols have constraints that help parties build trust. +For example, in buying a house, the protocol includes such things as +commission paid to realtors to guarantee their incentives, title insurance, +earnest money, and a phase of the process where a home inspection takes +place. If you are documenting a protocol that has attributes like +these, explain them here. If not, the section can be omitted. + +### "Messages" under "Reference" + +Unless the "Messages" section under "Tutorial" covered everything that +needs to be known about all message fields, this is where the data type, +validation rules, and semantics of each field in each message type are +details. Enumerating possible values, or providing ABNF or regexes is +encouraged. Following conventions such as [those for date- +and time-related fields](https://github.com/hyperledger/indy-hipe/pull/76) +can save a lot of time here. + +Each message type should be associated with one or more roles in the +protocol. That is, it should be clear which roles can send and receive +which message types. + +### "Examples" under "Reference" + +This section is optional. It can be used to show alternate flows through +the protocol. + +### "Collateral" under "Reference" + +This section is optional. It could be used to reference files, code, +relevant standards, oracles, test suites, or other artifacts that would +be useful to an implementer. In general, collateral should be checked in +with the HIPE. + +### "Localization" under "Reference" + +If communication in the protocol involves humans, then localization of +message content may be relevant. Default settings for localization of +all messages in the protocol can be specified in an `l10n.json` file +described here and checked in with the HIPE. See ["Decorators at Message +Type Scope"](https://github.com/hyperledger/indy-hipe/blob/318f265d508a3ddf1da7d91c79ae4ae27ab9142b/text/localized-messages/README.md#decorator-at-message-type-scope) +in the [Localization HIPE](https://github.com/hyperledger/indy-hipe/pull/64). + +### "Message Catalog" under "Reference" + +If the protocol has a formally defined catalog of codes (e.g., for errors +or for statuses), define them in this section. See ["Message Codes and +Catalogs"](https://github.com/hyperledger/indy-hipe/blob/318f265d508a3ddf1da7d91c79ae4ae27ab9142b/text/localized-messages/README.md#message-codes-and-catalogs) +in the [Localization HIPE](https://github.com/hyperledger/indy-hipe/pull/64). diff --git a/text/protocols/uris.md b/text/protocols/uris.md new file mode 100644 index 000000000..fa996600b --- /dev/null +++ b/text/protocols/uris.md @@ -0,0 +1,78 @@ +# Message Type and Protocol Identifier URIs + +Message types and protocols are identified with URIs that match certain +conventions. + +### MTURI + +A __message type URI__ (MTURI) identifies message types unambiguously. +Standardizing its format is important because it is parsed by agents that +will map messages to handlers--basically, code will look at this string and +say, "Do I have something that can handle this message type inside protocol +*X* version *Y*?" The URI MUST be composed as follows: + +![MTURI structure](mturi-structure.png) + +```ABNF +message-type-uri = doc-uri delim protocol-name + "/" protocol-version "/" message-type-name +delim = "?" / "/" / "&" / ":" / ";" / "=" +protocol-name = identifier +protocol-version = semver +message-type-name = identifier +identifier = alpha *(*(alphanumeric / "_" / "-" / ".") alphanumeric) +``` + +It can be loosely matched and parsed with the following regex: + + (.*?)([a-z0-9._-]+)/(\d[^/]*)/[a-z0-9._-]+$ + +A match will have captures groups of (1) = `doc-uri`, (2) = `protocol-name`, +(3) = `protocol-version`, and (4) = `message-type-name`. + +The goals of this URI are, in descending priority: + +* Code can use the URI to route messages to protocol +handlers using semver rules. + +* The definition of a protocol should be tied to the URI such +that it is semantically stable. This means that once version 1.0 +of a protocol is defined, its definition should not change in +ways that would break implementations. (See the [semver](#semver) +section for more on this.) + +* Developers can discover information about novel protocols, using +the URI to browse or search the web. + +The `doc-uri` portion is any URI that exposes documentation about +protocols. A developer should be able to browse to that URI and use human intelligence +to look up the named and versioned protocol. Optionally and preferably, the +full URI may produce a page of documentation about the specific message type, +with no human mediation involved. + +### PIURI + +A shorter URI that follows the same conventions but lacks the +`message-type-name` portion is called a __protocol identifier URI__ +(PIURI). Its loose matcher regex is: + + (.*?)([a-z0-9._-]+)/(\d[^/]*)/?$ + +Some examples of valid MTURIs and PIURIs include: + +* `http://example.com/protocols?which=lets_do_lunch/1.0/` (PIURI with fully automated lookup of protocol docs) +* `http://example.com/message_types?which=lets_do_lunch/1.0/proposal` (MTURI) +* `https://github.com/hyperledger/indy-hipe/tree/d7879f5e/text:trust_ping/1.0/ping` + (MTURI). Note that this URI returns a 404 error if followed directly--but + per rules described above, the developer should browse to the doc root + ([https://github.com/hyperledger/indy-hipe/tree/d7879f5e/text]( + https://github.com/hyperledger/indy-hipe/tree/d7879f5e/text + )) and look for documentation on the `trust_ping/1.0` protocol. +* `did:sov:BzCbsNYhMrjHiqZDTUASHg;spec/trust_ping/1.0/ping` (MTURI) This + uses a DID reference to look up an endpoint named `spec` that serves + information about protocols. (The exact syntax of DID references--URIs + where the DID functions like a domain name, and additional info is + fetched from a DID Doc in much the same way IP address and hostname + definitions are fetched from a DNS record--is still being finalized. + See the latest [DID Spec](https://w3c-ccg.github.io/did-spec) for details.) + From 11436d62eaf6d41c5face15f1b2938f69dbfc8d1 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 21:45:35 -0600 Subject: [PATCH 38/61] Further decomposition into subdocs Signed-off-by: Daniel Hardman --- text/protocols/README.md | 33 ++++++++++++++------------- text/protocols/semver.md | 22 ++++++++++++++++++ text/protocols/template-sections.png | Bin 0 -> 40949 bytes text/protocols/template.md | 31 +++++++++---------------- 4 files changed, 50 insertions(+), 36 deletions(-) create mode 100644 text/protocols/semver.md create mode 100644 text/protocols/template-sections.png diff --git a/text/protocols/README.md b/text/protocols/README.md index 630d3c86e..4846600a6 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -21,7 +21,7 @@ to formally define the roles in an interaction, the possible states those roles can have, the way state changes in response to messages, and the errors that may arise. -![protocol](protocol.png) +[![protocol](protocol.png)](https://docs.google.com/presentation/d/15UAkh_2WfDk7wlto7pSL7YU9NJr_XVMgGAOeNIRbzK8/edit#slide=id.p) In addition, we realized that we need clear examples of how to define all these things, so designs are consistent and robust. @@ -103,12 +103,12 @@ https://github.com/hyperledger/indy-hipe/blob/790987b9/text/introductions/README ### Message Families A message family is a collection of messages that share a common theme, goal, or -usage pattern. The messages used by a protocol -may be a subset of a particular message family; for example, the [connection -establishment protocol](../0031-connection-protocol/README.md) uses one subset -of the messages in the `connections` message family, and the [connection management -protocol](https://github.com/hyperledger/indy-hipe/blob/baa1ead5/text/conn-mgmt-protocols/README.md) -a different subset. +usage pattern. The messages used by a protocol may be a subset of a particular +message family; for example, the [connection establishment protocol]( +../0031-connection-protocol/README.md) uses one subset of the messages in the +`connections` message family, and the [connection management protocol]( +https://github.com/hyperledger/indy-hipe/blob/baa1ead5/text/conn-mgmt-protocols/README.md) +uses a different subset. Collectively, the message types of a protocol serve as its _interface_. Each protocol has a primary message family, and the name of the protocol is often the name of the @@ -118,12 +118,15 @@ primary message family. A protocol has the following ingredients: -* [_name and version_](template.md#name-and-version-under-tutorial) -* [_messages (primary message family)_](template.md#messages-under-tutorial) -* [_adopted messages_](template.md#adopted-messages) -* [_roles_](template.md#roles-under-tutorial) -* [_state_ and _sequencing rules_](template.md#state-under-tutorial) -* _events that can change state_ -- notably, _messages_, but also _errors_, _timeouts_, and so forth +* [_Name_](template.md#name-and-version-under-tutorial) and [semver-compatible + version](semver.md) +* [_URI_ that uniquely identifies it](uris.md) +* [_Messages (primary message family)_](template.md#messages-under-tutorial) +* [_Adopted messages_](template.md#adopted-messages) +* [_Roles_](template.md#roles-under-tutorial) +* [_State_ and _sequencing rules_](template.md#state-under-tutorial) +* _events that can change state_ -- notably, _messages_, but also _errors_, +_timeouts_, and other things. * _constraints that provide trust and incentives_ ### How to define a protocol or message family @@ -138,9 +141,7 @@ tictactoe-1.0/README.md) is also attached to this HIPE as an example. ## Reference -The [Tic-Tac-Toe 1.0 protocol]( -tictactoe-1.0/README.md) is attached to this HIPE as an example of a good -definition. + ## Drawbacks diff --git a/text/protocols/semver.md b/text/protocols/semver.md new file mode 100644 index 000000000..2b7d05b22 --- /dev/null +++ b/text/protocols/semver.md @@ -0,0 +1,22 @@ +# Semver Rules for Protocols + +[Semver](http://semver.org) rules apply in cascading fashion to versions +of protocols and individual message types. The version of a message type +or protocol is expressed in the `semver` portion of its [identifying URI]( +uris.md). + +Individual message types are versioned as part of a coherent protocol, which +constitutes a [public API in the semver sense](https://semver.org/#spec-item-1). +An individual message type can add new optional fields, or deprecate +existing fields, [with only a change to its protocol's minor +version](https://semver.org/#spec-item-7). +Similarly, a protocol can add new message types (or [adopted +ones](#adopted-messages)) with only a change +to the minor version. It can announce deprecated fields. It can add additional +semantics around optional decorators. These are all backwards-compatible +changes, also requiring only a minor version update. + +Changes that remove fields or message types, that make formerly optional +things required, or that alter the state machine in incompatible +ways, must result in an [increase of the major version of the protocol/primary +message family](https://semver.org/#spec-item-8). diff --git a/text/protocols/template-sections.png b/text/protocols/template-sections.png new file mode 100644 index 0000000000000000000000000000000000000000..50033dc261501394edceb83a091b43ae4b32d444 GIT binary patch literal 40949 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�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 F{RgL!WpV%j literal 0 HcmV?d00001 diff --git a/text/protocols/template.md b/text/protocols/template.md index 68b5520d5..2c18d9fd6 100644 --- a/text/protocols/template.md +++ b/text/protocols/template.md @@ -1,7 +1,9 @@ # Template for Protocol HIPEs A protocol HIPE conforms to general HIPE patterns, but includes some -specific substructure: +specific substructure. + +[![template sections](template-sections.png)](https://docs.google.com/presentation/d/15UAkh_2WfDk7wlto7pSL7YU9NJr_XVMgGAOeNIRbzK8/edit#slide=id.g5609c67f13_0_113) ### "Name and Version" under "Tutorial" @@ -22,25 +24,14 @@ for a given context (a user-friendly doc vs. CSS vs. python class vs. java class ##### URI representation -##### Semver Rules - -[Semver](http://semver.org) rules apply in cascading fashion to versions -of protocols and individual message types. Individual -message types are versioned as part of a coherent protocol, which -constitutes a [public API in the semver sense](https://semver.org/#spec-item-1). -An individual message type can add new optional fields, or deprecate -existing fields, [with only a change to its message family's minor -version](https://semver.org/#spec-item-7). -Similarly, a protocol can add new message types (or [adopted -ones](#adopted-messages)) with only a change -to the minor version. It can announce deprecated fields. It can add additional -semantics around optional decorators. These are all backwards-compatible -changes, also requiring only a minor version update. - -Changes that remove fields or message types, that make formerly optional -things required, or that alter the state machine in incompatible -ways, must result in an [increase of the major version of the protocol/primary -message family](https://semver.org/#spec-item-8). +Message types and protocols are identified with special URIs that match +certain conventions. See [Message Type and Protocol Identifier URIs]( +uris.md) for more details. + +##### Semver + +The version of a protocol is declared carefully. See [Semver Rules for +Protocols](semver.md) for details. ### "Key Concepts" under "Tutorial" From fa7bd048bb30eb46c73c9a82510d54dd0b73b45d Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 22:16:28 -0600 Subject: [PATCH 39/61] Section about protocol styles Signed-off-by: Daniel Hardman --- text/protocols/README.md | 143 ++++++++++++++++++---------- text/protocols/notification.png | Bin 0 -> 16698 bytes text/protocols/request-response.png | Bin 0 -> 21367 bytes text/protocols/state-details.md | 52 ++++++++++ text/protocols/template.md | 47 +-------- 5 files changed, 149 insertions(+), 93 deletions(-) create mode 100644 text/protocols/notification.png create mode 100644 text/protocols/request-response.png create mode 100644 text/protocols/state-details.md diff --git a/text/protocols/README.md b/text/protocols/README.md index 4846600a6..6dade3f39 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -28,7 +28,7 @@ these things, so designs are consistent and robust. ## Tutorial -### What is a protocol? +#### What is a protocol? A __protocol__ is a recipe for a stateful interaction. Protocols are all around us, and are so ordinary that we take them for granted. Each of the @@ -54,7 +54,30 @@ stateful interactions like: * Negotiating * Cooperative debugging -### Agent Design +#### Types of Protocols + +The most common protocol style in DID Communication is __request-response__. +This style involve two parties, with the `requester` making the first move, +and the `responder` completing the interaction. The [Protocol Discovery Protocol]( +https://github.com/hyperledger/indy-hipe/pull/73) uses this style. + +![request-response](request-response.png) + +A second common pattern that's also important is __notification__. This style also +involves two parties, but it is one-way: the `notifier` emits a message, +and the protocol ends when the `notified` receives it. The [ACK Protocol]( +https://github.com/hyperledger/indy-hipe/pull/77) and the [Problem Report +Protocol](https://github.com/hyperledger/indy-hipe/pull/65) use this style. + +![notification](notification.png) + +However, more complex protocols exist. The [Introductions Protocol]( +https://github.com/hyperledger/indy-hipe/pull/110) involves three parties, +not two. The [Connection Management Protocol]( + https://github.com/hyperledger/indy-hipe/pull/104) may involve dozens or +hundreds of agents, and it has cycles and other complex state evolution. + +#### Agent Design Protocols are *the* key unit of interoperable extensibility in agents. To add a new interoperable feature to an agent, give it the ability to handle a @@ -69,7 +92,7 @@ https://github.com/hyperledger/indy-hipe/blob/36913b80/text/0002-agents/README.m and the [DIDComm explainer HIPE]( https://github.com/hyperledger/indy-hipe/blob/b0708395/text/0003-did-comm/README.md). -### Composable +#### Composable Protocols are *composable*--meaning that you can nest one inside another. The protocol for asking someone to repeat their last sentence can occur @@ -100,7 +123,7 @@ https://github.com/hyperledger/indy-hipe/blob/790987b9/text/introductions/README ![super- and async subprotocols](super-sub-async.png) -### Message Families +#### Message Families A message family is a collection of messages that share a common theme, goal, or usage pattern. The messages used by a protocol may be a subset of a particular @@ -114,7 +137,7 @@ Collectively, the message types of a protocol serve as its _interface_. Each pro has a primary message family, and the name of the protocol is often the name of the primary message family. -### Ingredients +#### Ingredients A protocol has the following ingredients: @@ -125,11 +148,14 @@ A protocol has the following ingredients: * [_Adopted messages_](template.md#adopted-messages) * [_Roles_](template.md#roles-under-tutorial) * [_State_ and _sequencing rules_](template.md#state-under-tutorial) -* _events that can change state_ -- notably, _messages_, but also _errors_, -_timeouts_, and other things. -* _constraints that provide trust and incentives_ +* _Events that can change state_ -- notably, _messages_, but also _errors_, +_timeouts_, and other things +* _Constraints that provide trust and incentives_ -### How to define a protocol or message family + + + +#### How to define a protocol or message family To define a protocol, write a HIPE. Specific instructions for protocol HIPEs, and a discussion about the theory behind detailed @@ -141,7 +167,8 @@ tictactoe-1.0/README.md) is also attached to this HIPE as an example. ## Reference - +* [Message Type and Protocol Identifier URIs](uris.md) +* [Semver Rules for Protocols](semver.md) ## Drawbacks @@ -163,56 +190,76 @@ interop. ## Prior art -[bpmn]: #bpmn -* [BPMN](https://en.wikipedia.org/wiki/Business_Process_Model_and_Notation): A - graphical language for modeling flows of all types (plus things less like - our protocols as well). BPMN is a mature standard sponsored by [OMG]( - https://en.wikipedia.org/wiki/Object_Management_Group). It has a nice - [tool ecosystem](https://camunda.com/bpmn/tool/). It also has an XML file - format, so the visual diagrams have a two-way transformation to and from - formal written language. It also has a code generation mode, where BPMN - can be used to drive executable behavior if diagrams are sufficiently - detailed and sufficiently standard. (Since BPMN supports various extensions - and is often used at various levels of formality, execution is not its most - common application.) BPMN began with a focus on centralized processes - (those driven by a business entity), with diagrams organized around the goal - of the point-of-view entity and what they experience in the interaction. This - is somewhat different from an A2A protocol where any given entity may experience - the goal and the scope of interaction differently; the state machine for a - home inspector in the "buy a home" protocol is _quite_ different, and somewhat - separable, from the state machine of the buyer, and that of the title insurance - company. BPMN 2.0 introduced the notion of a [choreography]( - https://www.visual-paradigm.com/guide/bpmn/bpmn-orchestration-vs-choreography-vs-collaboration/#bpmn-choreography), - which is much closer to the concept of an A2A protocol, and which has quite - an elegent and intuitive visual representation. However, even a BPMN - choreography doesn't have a way to discuss interactions with decorators, - adoption of generic messages, and other A2A-specific concerns. Thus, we may - lean on BPMN for some diagramming tasks, but it is not a substitute for the - HIPE definition procedure described here. -* [WSDL](https://www.w3.org/TR/2001/NOTE-wsdl-20010315): A web-centric - evolution of earlier, RPC-style interface definition languages like - [IDL in all its varieties](https://en.wikipedia.org/wiki/Interface_description_language) - and [CORBA](https://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture). - These technologies describe a *called* interface, but they don't describe - the caller, and they lack a formalism for capturing state changes, especiall - by the caller. They are also out of favor in the programmer community at - present, as being too heavy, [too fragile]( - https://codecraft.co/2008/07/29/decoupling-interfaces-as-versions-evolve-part-1/), - or poorly supported by current tools. -* [Swagger/OpenAPI](https://swagger.io/docs/specification/about/): Overlaps +#### BPMN + +[BPMN](https://en.wikipedia.org/wiki/Business_Process_Model_and_Notation) is a +graphical language for modeling flows of all types (plus things less like +our protocols as well). BPMN is a mature standard sponsored by [OMG]( +https://en.wikipedia.org/wiki/Object_Management_Group). It has a nice +[tool ecosystem](https://camunda.com/bpmn/tool/). It also has an XML file +format, so the visual diagrams have a two-way transformation to and from +formal written language. And it has a code generation mode, where BPMN +can be used to drive executable behavior if diagrams are sufficiently +detailed and sufficiently standard. (Since BPMN supports various extensions +and is often used at various levels of formality, execution is not its most +common application.) + +BPMN began with a focus on centralized processes +(those driven by a business entity), with diagrams organized around the goal +of the point-of-view entity and what they experience in the interaction. This +is somewhat different from a DIDComm protocol where any given entity may experience +the goal and the scope of interaction differently; the state machine for a +home inspector in the "buy a home" protocol is _quite_ different, and somewhat +separable, from the state machine of the buyer, and that of the title insurance +company. + +BPMN 2.0 introduced the notion of a [choreography]( +https://www.visual-paradigm.com/guide/bpmn/bpmn-orchestration-vs-choreography-vs-collaboration/#bpmn-choreography), +which is much closer to the concept of an A2A protocol, and which has quite +an elegent and intuitive visual representation. However, even a BPMN +choreography doesn't have a way to discuss interactions with decorators, +adoption of generic messages, and other A2A-specific concerns. Thus, we may +lean on BPMN for some diagramming tasks, but it is not a substitute for the +HIPE definition procedure described here. + +#### WSDL + +[WSDL](https://www.w3.org/TR/2001/NOTE-wsdl-20010315) is a web-centric +evolution of earlier, RPC-style interface definition languages like +[IDL in all its varieties](https://en.wikipedia.org/wiki/Interface_description_language) +and [CORBA](https://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture). +These technologies describe a *called* interface, but they don't describe +the caller, and they lack a formalism for capturing state changes, especiall +by the caller. They are also out of favor in the programmer community at +present, as being too heavy, [too fragile]( +https://codecraft.co/2008/07/29/decoupling-interfaces-as-versions-evolve-part-1/), +or poorly supported by current tools. + +#### Swagger / OpenAPI + +[Swagger / OpenAPI](https://swagger.io/docs/specification/about/) overlaps about 60% with the concerns of protocol definition in agent-to-agent interactions. We like the tools and the convenience of the paradigm offered by OpenAPI, but where these two do not overlap, we have impedance. + Agent-to-agent protocols must support more than 2 roles, or two roles that are peers, whereas RESTful web services assume just client and server--and only the server has a documented API. + Agent-to-agent protocols are fundamentally asynchronous, whereas RESTful web services mostly assume synchronous request~response. + Agent-to-agent protocols have complex considerations for diffuse trust, whereas RESTful web services centralize trust in the web server. + Agent-to-agent protocols need to support transports beyond HTTP, whereas - RESTful web services do not. Agent-to-agent protocols are nestable, while + RESTful web services do not. + + Agent-to-agent protocols are nestable, while RESTful web services don't provide any special support for that construct. + +#### Other + * [Pdef (Protocol Definition Language)](https://github.com/pdef/pdef): An alternative to Swagger. * [JSON RPC](https://www.jsonrpc.org/specification): Defines how invocation of remote methods can be accomplished by passing JSON messages. However, the diff --git a/text/protocols/notification.png b/text/protocols/notification.png new file mode 100644 index 0000000000000000000000000000000000000000..4927ad596dbc90ec5fccefd77ac4a8f2e1dcd808 GIT binary patch literal 16698 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 literal 0 HcmV?d00001 diff --git a/text/protocols/request-response.png b/text/protocols/request-response.png new file mode 100644 index 0000000000000000000000000000000000000000..ec75b78865cd8a663ef6c50af52d3cb1f71990a7 GIT binary patch literal 21367 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 literal 0 HcmV?d00001 diff --git a/text/protocols/state-details.md b/text/protocols/state-details.md new file mode 100644 index 000000000..2a2424b18 --- /dev/null +++ b/text/protocols/state-details.md @@ -0,0 +1,52 @@ +# State Details and State Machines + +### Types of Protocols + +Some protocols are + +Some protocols have only one role, and thus only one state machine. +But in many protocols, different participants may have different state +machines. This section has been neglected in many early efforts at protocol +definition, and its omission is a big miss. Analyzing all possible states +and events for all roles leads to robustness; skipping the analysis leads +to fragility. + +### State machines + +Writing a formal state machine to accompany the state matrix of a protocol +is not required, but it is a best practice. For developers who have not worked +with state machines before, this may sound intimidating, but it is actually +quite easy, and it provides a clean encapsulation of logic that would otherwise +be a bunch of conditionals scattered throughout the code. It also provides a +convenient way to load state later, when a message arrives for an interaction +that is only partly complete. And it makes formal testing for completeness and +security much easier. + +The introduction HIPE includes a sample state machine. [TODO: get link] + +For an extended example of how state machines can be used, including in nested +protocols, and with hooks that let custom processing happen at each point in +a flow, see [https://github.com/dhh1128/distributed-state-machine]( +https://github.com/dhh1128/distributed-state-machine/blob/master/README.md). + +### Processing Points + +A protocol definition describes key points in the flow where business logic +can attach. Some of these __processing points__ are obvious, because the +protocol calls for a decision to be made. Others are implicit. Some examples +include: + +* The _beginning_ and _end_. +* The _launch of a subprotocol_. +* The _completion of a subprotocol_, or the _subprotocol changing state_. +* _Sending a message_. (For each send, the sender could choose to go silent +and abandon the interaction instead, though many +protocols would ask for notification to be emitted as best practice.) +* (Receiving a message_. (Requires validation, then integration +with policy and processes internal to the agent and its sovereign domain, +to move the interaction forward.) + +When a protocol is modeled with a state machine, each of these processing +points can be hooked without cluttering the state machine itself. This is +a nice encapsulation pattern. + diff --git a/text/protocols/template.md b/text/protocols/template.md index 2c18d9fd6..a7cf191e3 100644 --- a/text/protocols/template.md +++ b/text/protocols/template.md @@ -99,51 +99,8 @@ agent test suite, in log messages, and so forth. By convention, state names use lower-kebab-case but are compared case-insensitively and ignoring punctuation. -Some protocols have only one role, and thus only one state machine. -But in many protocols, different participants may have different state -machines. This section has been neglected in many early efforts at protocol -definition, and its omission is a big miss. Analyzing all possible states -and events for all roles leads to robustness; skipping the analysis leads -to fragility. - -##### State machines - -Writing a formal state machine to accompany the state matrix of a protocol -is not required, but it is a best practice. For developers who have not worked -with state machines before, this may sound intimidating, but it is actually -quite easy, and it provides a clean encapsulation of logic that would otherwise -be a bunch of conditionals scattered throughout the code. It also provides a -convenient way to load state later, when a message arrives for an interaction -that is only partly complete. And it makes formal testing for completeness and -security much easier. - -The introduction HIPE includes a sample state machine. [TODO: get link] - -For an extended example of how state machines can be used, including in nested -protocols, and with hooks that let custom processing happen at each point in -a flow, see [https://github.com/dhh1128/distributed-state-machine]( -https://github.com/dhh1128/distributed-state-machine/blob/master/README.md). - -##### Processing Points - -A protocol definition describes key points in the flow where business logic -can attach. Some of these __processing points__ are obvious, because the -protocol calls for a decision to be made. Others are implicit. Some examples -include: - -* The _beginning_ and _end_. -* The _launch of a subprotocol_. -* The _completion of a subprotocol_, or the _subprotocol changing state_. -* _Sending a message_. (For each send, the sender could choose to go silent -and abandon the interaction instead, though many -protocols would ask for notification to be emitted as best practice.) -* (Receiving a message_. (Requires validation, then integration -with policy and processes internal to the agent and its sovereign domain, -to move the interaction forward.) - -When a protocol is modeled with a state machine, each of these processing -points can be hooked without cluttering the state machine itself. This is -a nice encapsulation pattern. +State management in protocols is a deep topic. For more information, please +see [State Details and State Machines](state-details.md). ### "Messages" under "Tutorial" From 36988fcb3e9280ea6670b2e15f52eb9eda2f815b Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 22:25:01 -0600 Subject: [PATCH 40/61] Cleanup Signed-off-by: Daniel Hardman --- text/protocols/state-details.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/text/protocols/state-details.md b/text/protocols/state-details.md index 2a2424b18..a4e99165d 100644 --- a/text/protocols/state-details.md +++ b/text/protocols/state-details.md @@ -1,9 +1,5 @@ # State Details and State Machines -### Types of Protocols - -Some protocols are - Some protocols have only one role, and thus only one state machine. But in many protocols, different participants may have different state machines. This section has been neglected in many early efforts at protocol From 7fd53471175b7c97be36e1c43e29b88c57a06e15 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 22:39:36 -0600 Subject: [PATCH 41/61] Improve state machine discussion Signed-off-by: Daniel Hardman --- text/protocols/state-details.md | 20 +++++++++++++++++- text/protocols/state-machine-thumbnail.png | Bin 0 -> 64824 bytes text/protocols/tictactoe-1.0/state_machine.py | 2 ++ 3 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 text/protocols/state-machine-thumbnail.png diff --git a/text/protocols/state-details.md b/text/protocols/state-details.md index a4e99165d..d44e71764 100644 --- a/text/protocols/state-details.md +++ b/text/protocols/state-details.md @@ -18,7 +18,11 @@ convenient way to load state later, when a message arrives for an interaction that is only partly complete. And it makes formal testing for completeness and security much easier. -The introduction HIPE includes a sample state machine. [TODO: get link] +The tictactoe example includes a complete state machine in less than 50 +lines of code. See [state-machine.py](tictactoe-1.0/state-machine.py). + +[![state machine thumbnail](state-machine-thumbnail.png)]( +https://docs.google.com/presentation/d/15UAkh_2WfDk7wlto7pSL7YU9NJr_XVMgGAOeNIRbzK8/edit#slide=id.g5609c67f13_0_182) For an extended example of how state machines can be used, including in nested protocols, and with hooks that let custom processing happen at each point in @@ -46,3 +50,17 @@ When a protocol is modeled with a state machine, each of these processing points can be hooked without cluttering the state machine itself. This is a nice encapsulation pattern. +### State Machine Scope + +If you study the state machine example in the tictactoe protocol, you will +see that the state machine only concerns itself with *interacting* correctly; +it doesn't deal with implementing game logic such as deciding what a valid move +is. This is the job of an entirely different object, [game.py](tictactoe-1.0/game.py). + +Agents building protocol support are going to see a similar pattern. The state +machine guarantees that rules about interacting with other parties are followed +correctly; other logic is needed to implement business rules, make decisions, +and so forth. Notice how the tictactoe state machine includes hooks (its `pre` +and `post` and `on_error` members) that allow it to be connected to other +code at processing points. + diff --git a/text/protocols/state-machine-thumbnail.png b/text/protocols/state-machine-thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..bcf9eb8ba5d8ea205fe2a580900fb069bbeee303 GIT binary patch literal 64824 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
    N??T4GbmL+^KTM+qfJ5^(* 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 aZnD#>@3Uu{B3CQ;&!~~srs2l+p8pM45qt3f literal 0 HcmV?d00001 From f07581396cbed20fc530f8e7f39ccb62008e0e42 Mon Sep 17 00:00:00 2001 From: Devin Fisher Date: Thu, 2 May 2019 17:17:23 -0600 Subject: [PATCH 55/61] fix typo Signed-off-by: Devin Fisher --- text/protocols/parties-roles-participants.md | 35 +++++++++++++++----- 1 file changed, 27 insertions(+), 8 deletions(-) diff --git a/text/protocols/parties-roles-participants.md b/text/protocols/parties-roles-participants.md index 7d3e0e03a..cdd1c8e4d 100644 --- a/text/protocols/parties-roles-participants.md +++ b/text/protocols/parties-roles-participants.md @@ -1,17 +1,37 @@ # Parties, Roles, and Participants - -The __parties__ in a protocol are the identity owners involved. In a protocol -where Alice introduces Bob to Carol, the parties are Alice, Bob, and Carol. + +## Parties + +The __parties__ in a protocol are the identity owners involved. The set of parties of a protocol is simple expression involvement in the protocol. Parties *must* be an identifiable self-sovereign domain. Although normally, the set of parties are known at the start of a protocol, that is not a requirement. Some protocols can commence without all parties known and a party could be included later in the course of the protocol. + +For many protocols, there are only two parties. And these protocols fit nicely into a pairwise relationship. But some protocol will only have one party (ex. wallet backup) and others will involve multiple parties (ex. introduction). + +Normally, the parties that are involved in a protocol also participate in the interaction but this is not always the case. Consider a gossip protocol, two parties may be talking about a third party. In this case, the third party would not even know that the protocol was happening and would definitely not participate. + +As an example, in an introduction protocol where Alice introduces Bob to Carol, the parties are Alice, Bob, and Carol. + +## Roles The __roles__ in a protocol are the perspectives that parties take on an -interaction. In an auction protocol, there are only two roles--*auctioneer* -and *bidder*--even though there may be many parties. +interaction. + +This perspective is manifested in three general ways: + * by the expectations that a party takes on in a protocol (ex. a role may be expected to do something to start a protocol). + * by the messages that a party can and does use in the course of the protocol (some messages may be reserved for a single role, while other may used by some if not all roles). + * by the state and the transition rules + +Like parties, roles are normally known at the start of the protocol but this is not a requirement. + +As an example, in an auction protocol, there are only two roles--*auctioneer* +and *bidder*--even though there may be many parties involved. + +# Participants The __participants__ in a protocol are the agents that actually move the steps of -the protocol thorugh the interaction. Alice, Bob, and Carol may each have a cloud +the protocol through the interaction. Alice, Bob, and Carol may each have a cloud agent, a laptop, and a phone; if they engage in an introduction protocol using phones, then the agents on their phones are the participants. If the phones -talk directly over bluetooth, this is particularly clear--but even if the phones +talk directly over Bluetooth, this is particularly clear--but even if the phones leverage push notifications and HTTP such that cloud agents help with routing, only the phone agents are participants, because only they maintain state for the interaction underway. (The cloud agents would be __facilitators__, and @@ -19,4 +39,3 @@ the laptops would be __bystanders__). When a protocol is complete, the participant agents know about the outcome; they may need to synchronize or replicate their state before other agents of the parties are aware. - From 5c1fa6d2217933675a0beb9cbf079bcee3a3f327 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Wed, 15 May 2019 14:48:11 -0600 Subject: [PATCH 56/61] wordsmith definitions more Signed-off-by: Daniel Hardman --- text/protocols/parties-roles-participants.md | 63 ++++++++++++++------ 1 file changed, 45 insertions(+), 18 deletions(-) diff --git a/text/protocols/parties-roles-participants.md b/text/protocols/parties-roles-participants.md index cdd1c8e4d..ea122c05f 100644 --- a/text/protocols/parties-roles-participants.md +++ b/text/protocols/parties-roles-participants.md @@ -2,40 +2,67 @@ ## Parties -The __parties__ in a protocol are the identity owners involved. The set of parties of a protocol is simple expression involvement in the protocol. Parties *must* be an identifiable self-sovereign domain. Although normally, the set of parties are known at the start of a protocol, that is not a requirement. Some protocols can commence without all parties known and a party could be included later in the course of the protocol. +The __parties__ to a protocol are the entities directly responsible for achieving the protocol's goals. +When a protocol is high-level, parties are typically people or organizations; as protocols become lower-level, +parties may be specific agents tasked with detail work. -For many protocols, there are only two parties. And these protocols fit nicely into a pairwise relationship. But some protocol will only have one party (ex. wallet backup) and others will involve multiple parties (ex. introduction). +Imagine a situation where Alice wants a vacation. She engages with a travel agent named Bob. Together, they +begin an "arrange a vacation" protocol. Alice is responsible for expressing her parameters and proving her willingness to +pay; Bob is responsible for running a bunch of subprotocols to work out the details. Alice and Bob--not software +agents they use--are parties to this high-level protocol, since they share responsibility for its goals. -Normally, the parties that are involved in a protocol also participate in the interaction but this is not always the case. Consider a gossip protocol, two parties may be talking about a third party. In this case, the third party would not even know that the protocol was happening and would definitely not participate. +As soon as Alice has provided enough direction and hangs up the phone, Bob begins a subprotocol with a hotel to book +a room for Alice. This new subprotocol has related but different goals--it is about booking a particular hotel room, not +about the vacation as a whole. We can see the difference when we consider that Bob could abandon the booking and choose +a different hotel entirely, without affecting the overarching "arrange a vacation" protocol. With the change in goal, +the parties have now changed, too. Bob and a hotel concierge are the ones responsible +for making the "book a hotel room" protocol progress. Alice is an approver and indirect stakeholder, but she is +not doing the work. (In [RACI terms](https://en.wikipedia.org/wiki/Responsibility_assignment_matrix), +Alice is an "accountable" or "approving" entity, but only Bob and the concierge are "responsible" parties.) -As an example, in an introduction protocol where Alice introduces Bob to Carol, the parties are Alice, Bob, and Carol. +Now, as part of the hotel reservation, Bob tells the concierge that the guest would like access to a waverunner +to play in the ocean on day 2. The concierge engages in yet another subprotocol to reserve the waverunner. The +goal of this subprotocol is to reserve the equipment, not to book a hotel or arrange a vacation. The parties to this +sub-sub-protocol are the concierge and the person or automated system that manages waverunners. -## Roles +Often, parties are known at the start of a protocol; however, that is not a requirement. Some protocols might commence +with some parties not yet known or assigned. -The __roles__ in a protocol are the perspectives that parties take on an +For many protocols, there are only two parties, and they are in a pairwise relationship. Other protocols +are more complex. Introductions involves three; an auction may involve many. + +Normally, the parties that are involved in a protocol also participate in the interaction but this is not always the +case. Consider a gossip protocol, two parties may be talking about a third party. In this case, the third party would +not even know that the protocol was happening and would definitely not participate. + +## Roles + +The __roles__ in a protocol are the perspectives (responsibilities, privileges) that parties take on an interaction. This perspective is manifested in three general ways: + * by the expectations that a party takes on in a protocol (ex. a role may be expected to do something to start a protocol). * by the messages that a party can and does use in the course of the protocol (some messages may be reserved for a single role, while other may used by some if not all roles). * by the state and the transition rules Like parties, roles are normally known at the start of the protocol but this is not a requirement. -As an example, in an auction protocol, there are only two roles--*auctioneer* +In an auction protocol, there are only two roles--*auctioneer* and *bidder*--even though there may be many parties involved. # Participants -The __participants__ in a protocol are the agents that actually move the steps of -the protocol through the interaction. Alice, Bob, and Carol may each have a cloud -agent, a laptop, and a phone; if they engage in an introduction protocol using -phones, then the agents on their phones are the participants. If the phones -talk directly over Bluetooth, this is particularly clear--but even if the phones -leverage push notifications and HTTP such that cloud agents help with routing, -only the phone agents are participants, because only they maintain state for -the interaction underway. (The cloud agents would be __facilitators__, and -the laptops would be __bystanders__). When a -protocol is complete, the participant agents know about the outcome; they may -need to synchronize or replicate their state before other agents of the +The __participants__ in a protocol are the agents that consume and/or emit +[plaintext application-level messages]( +https://github.com/hyperledger/indy-hipe/tree/master/text/0026-agent-file-format#agent-plaintext-messages-ap) +that embody the protocol's interaction. Alice, Bob, and +Carol may each have a cloud agent, a laptop, and a phone; if they engage in an +introduction protocol using phones, then the agents on their phones are the participants. +If the phones talk directly over Bluetooth, this is particularly clear--but even if the +phones leverage push notifications and HTTP such that cloud agents help with routing, +only the phone agents are participants, because only they maintain state for the +interaction underway. (The cloud agents would be __facilitators__, and the laptops would +be __bystanders__). When a protocol is complete, the participant agents know about the +outcome; they may need to synchronize or replicate their state before other agents of the parties are aware. From 80628971793f022c8dc0556565ef2814a38f9a22 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Wed, 15 May 2019 15:30:49 -0600 Subject: [PATCH 57/61] Clarify definitions Signed-off-by: Daniel Hardman --- text/protocols/parties-roles-participants.md | 52 ++++++++++++++++---- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/text/protocols/parties-roles-participants.md b/text/protocols/parties-roles-participants.md index ea122c05f..39d235314 100644 --- a/text/protocols/parties-roles-participants.md +++ b/text/protocols/parties-roles-participants.md @@ -1,28 +1,29 @@ -# Parties, Roles, and Participants +# Parties, Roles, Participants, and Drivers ## Parties The __parties__ to a protocol are the entities directly responsible for achieving the protocol's goals. When a protocol is high-level, parties are typically people or organizations; as protocols become lower-level, -parties may be specific agents tasked with detail work. +parties may be specific agents tasked with detail work through delegation. Imagine a situation where Alice wants a vacation. She engages with a travel agent named Bob. Together, they begin an "arrange a vacation" protocol. Alice is responsible for expressing her parameters and proving her willingness to pay; Bob is responsible for running a bunch of subprotocols to work out the details. Alice and Bob--not software agents they use--are parties to this high-level protocol, since they share responsibility for its goals. -As soon as Alice has provided enough direction and hangs up the phone, Bob begins a subprotocol with a hotel to book -a room for Alice. This new subprotocol has related but different goals--it is about booking a particular hotel room, not +As soon as Alice has provided enough direction and hangs up the phone, Bob begins a sub-protocol with a hotel to book +a room for Alice. This sub-protocol has related but different goals--it is about booking a particular hotel room, not about the vacation as a whole. We can see the difference when we consider that Bob could abandon the booking and choose -a different hotel entirely, without affecting the overarching "arrange a vacation" protocol. With the change in goal, -the parties have now changed, too. Bob and a hotel concierge are the ones responsible +a different hotel entirely, without affecting the overarching "arrange a vacation" protocol. + +With the change in goal, the parties have now changed, too. Bob and a hotel concierge are the ones responsible for making the "book a hotel room" protocol progress. Alice is an approver and indirect stakeholder, but she is not doing the work. (In [RACI terms](https://en.wikipedia.org/wiki/Responsibility_assignment_matrix), Alice is an "accountable" or "approving" entity, but only Bob and the concierge are "responsible" parties.) Now, as part of the hotel reservation, Bob tells the concierge that the guest would like access to a waverunner -to play in the ocean on day 2. The concierge engages in yet another subprotocol to reserve the waverunner. The -goal of this subprotocol is to reserve the equipment, not to book a hotel or arrange a vacation. The parties to this +to play in the ocean on day 2. The concierge engages in a sub-sub-protocol to reserve the waverunner. The +goal of this sub-sub-protocol is to reserve the equipment, not to book a hotel or arrange a vacation. The parties to this sub-sub-protocol are the concierge and the person or automated system that manages waverunners. Often, parties are known at the start of a protocol; however, that is not a requirement. Some protocols might commence @@ -51,7 +52,7 @@ Like parties, roles are normally known at the start of the protocol but this is In an auction protocol, there are only two roles--*auctioneer* and *bidder*--even though there may be many parties involved. -# Participants +## Participants The __participants__ in a protocol are the agents that consume and/or emit [plaintext application-level messages]( @@ -66,3 +67,36 @@ interaction underway. (The cloud agents would be __facilitators__, and the lapto be __bystanders__). When a protocol is complete, the participant agents know about the outcome; they may need to synchronize or replicate their state before other agents of the parties are aware. + +## Drivers + +The __drivers__ in a protocol are entities that make decisions. They may or may not be direct parties. + +Imagine a remote chess game between Bob and Carol, conducted with software agents. The chess protocol isn't +technically about how to select a wise chess move; it's about communicating the moves so parties achieve +the shared goal of running a game to completion. Yet choices about moves are clearly made as the protocol +unfolds. These choices are made by drivers--Bob and Carol--while the agents responsible for the work of +moving the game forward wait with the protocol suspended. + +In this case, Bob and Carol could be analyzed as parties to the protocol, as well as drivers. But in other +cases, the concepts are distinct. For example, in a protocol to issue credentials, the issuing institution +and the + +in sync. + . Bob and Carol use software agents to play the game; +these agents exchange messages that express the moves. These agents are tasked with the work of moving +the game forward--but they are not tasked with winning the game. That task falls to Bob and Carol, +who are drivers. Each time a move is made, the agent must consult the driver to get a decision about +a counter-move. + +If Bob connects his software agent to an AI, then the AI becomes the driver, not Bob. + + + + +They would have the responsibility of moving the game forward quickly and accurately. However, + +However, the agents are not trying to win they game; their goal is to faithfully move the game +forwardThis is the actual work +of making the protocol progress. However, the software agents must consult their owners to learn what move +should come next. \ No newline at end of file From 0fe9decd9387e4908b410d4cc350f95276f7950e Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Tue, 21 May 2019 14:17:46 -0600 Subject: [PATCH 58/61] Supersede with Aries RFC Signed-off-by: Daniel Hardman --- text/protocols/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/text/protocols/README.md b/text/protocols/README.md index 11496387a..4582f48aa 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -1,3 +1,7 @@ +![moved to github.com/hyperledger/aries-rfcs repo](https://i.ibb.co/5jqzvN5/Screen-Shot-2019-05-21-at-2-07-33-PM.png) + + New location: https://github.com/hyperledger/aries-rfcs/blob/master/concepts/0003-protocols/README.md + # 00??: Protocols - Name: protocols From 0d885dce121d13db860c135146ae1fee49717229 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Tue, 21 May 2019 14:19:12 -0600 Subject: [PATCH 59/61] Supersede with Aries RFC Signed-off-by: Daniel Hardman --- text/protocols/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/protocols/README.md b/text/protocols/README.md index 4582f48aa..9a361a0dd 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -1,6 +1,6 @@ ![moved to github.com/hyperledger/aries-rfcs repo](https://i.ibb.co/5jqzvN5/Screen-Shot-2019-05-21-at-2-07-33-PM.png) - New location: https://github.com/hyperledger/aries-rfcs/blob/master/concepts/0003-protocols/README.md + New location: [aries-rfcs/concepts/0003-protocols](https://github.com/hyperledger/aries-rfcs/blob/master/concepts/0003-protocols/README.md) # 00??: Protocols From b6245bee07917b368ab2fe6f5e50f465461b1150 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Tue, 21 May 2019 14:20:08 -0600 Subject: [PATCH 60/61] Supersede with Aries RFC Signed-off-by: Daniel Hardman --- text/protocols/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/protocols/README.md b/text/protocols/README.md index 9a361a0dd..a0f9cdffb 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -1,6 +1,6 @@ ![moved to github.com/hyperledger/aries-rfcs repo](https://i.ibb.co/5jqzvN5/Screen-Shot-2019-05-21-at-2-07-33-PM.png) - New location: [aries-rfcs/concepts/0003-protocols](https://github.com/hyperledger/aries-rfcs/blob/master/concepts/0003-protocols/README.md) +New location: [aries-rfcs/concepts/0003-protocols](https://github.com/hyperledger/aries-rfcs/blob/master/concepts/0003-protocols/README.md) # 00??: Protocols From afb164f9da94776f0e535f94f44925a178fba5f5 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Tue, 21 May 2019 14:20:40 -0600 Subject: [PATCH 61/61] Supersede with Aries RFC Signed-off-by: Daniel Hardman --- text/protocols/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/protocols/README.md b/text/protocols/README.md index a0f9cdffb..3995fa085 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -1,4 +1,4 @@ -![moved to github.com/hyperledger/aries-rfcs repo](https://i.ibb.co/5jqzvN5/Screen-Shot-2019-05-21-at-2-07-33-PM.png) +[![moved to github.com/hyperledger/aries-rfcs repo](https://i.ibb.co/5jqzvN5/Screen-Shot-2019-05-21-at-2-07-33-PM.png)](https://github.com/hyperledger/aries-rfcs/blob/master/concepts/0003-protocols/README.md) New location: [aries-rfcs/concepts/0003-protocols](https://github.com/hyperledger/aries-rfcs/blob/master/concepts/0003-protocols/README.md)

I4H} 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 Date: Fri, 5 Apr 2019 22:44:20 -0600 Subject: [PATCH 42/61] Add a link to state details in reference Signed-off-by: Daniel Hardman --- text/protocols/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/text/protocols/README.md b/text/protocols/README.md index 6dade3f39..47f31dbd2 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -153,8 +153,6 @@ _timeouts_, and other things * _Constraints that provide trust and incentives_ - - #### How to define a protocol or message family To define a protocol, write a HIPE. Specific instructions for @@ -169,6 +167,7 @@ tictactoe-1.0/README.md) is also attached to this HIPE as an example. * [Message Type and Protocol Identifier URIs](uris.md) * [Semver Rules for Protocols](semver.md) +* [State Details and State Machines](state-details.md) ## Drawbacks From 9ef9a0d8c9e7551c36f82f58f1ed408d33b0c20c Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 22:46:36 -0600 Subject: [PATCH 43/61] correct hyperlink Signed-off-by: Daniel Hardman --- text/protocols/state-details.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/text/protocols/state-details.md b/text/protocols/state-details.md index d44e71764..557325566 100644 --- a/text/protocols/state-details.md +++ b/text/protocols/state-details.md @@ -22,7 +22,7 @@ The tictactoe example includes a complete state machine in less than 50 lines of code. See [state-machine.py](tictactoe-1.0/state-machine.py). [![state machine thumbnail](state-machine-thumbnail.png)]( -https://docs.google.com/presentation/d/15UAkh_2WfDk7wlto7pSL7YU9NJr_XVMgGAOeNIRbzK8/edit#slide=id.g5609c67f13_0_182) +tictactoe-1.0/state-machine.py) For an extended example of how state machines can be used, including in nested protocols, and with hooks that let custom processing happen at each point in From 23f44abd791861c411486ff476172a1c8eb75e18 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 22:48:47 -0600 Subject: [PATCH 44/61] correct hyperlink Signed-off-by: Daniel Hardman --- text/protocols/state-details.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/text/protocols/state-details.md b/text/protocols/state-details.md index 557325566..8d6acf8f1 100644 --- a/text/protocols/state-details.md +++ b/text/protocols/state-details.md @@ -19,10 +19,10 @@ that is only partly complete. And it makes formal testing for completeness and security much easier. The tictactoe example includes a complete state machine in less than 50 -lines of code. See [state-machine.py](tictactoe-1.0/state-machine.py). +lines of code. See [state-machine.py](./tictactoe-1.0/state-machine.py). [![state machine thumbnail](state-machine-thumbnail.png)]( -tictactoe-1.0/state-machine.py) +./tictactoe-1.0/state-machine.py) For an extended example of how state machines can be used, including in nested protocols, and with hooks that let custom processing happen at each point in From fd0e4843ea4e76739840afa0ae20006ef376714b Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Fri, 5 Apr 2019 22:50:52 -0600 Subject: [PATCH 45/61] correct hyperlink Signed-off-by: Daniel Hardman --- text/protocols/state-details.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/text/protocols/state-details.md b/text/protocols/state-details.md index 8d6acf8f1..8ec522ec9 100644 --- a/text/protocols/state-details.md +++ b/text/protocols/state-details.md @@ -19,10 +19,10 @@ that is only partly complete. And it makes formal testing for completeness and security much easier. The tictactoe example includes a complete state machine in less than 50 -lines of code. See [state-machine.py](./tictactoe-1.0/state-machine.py). +lines of code. See [state-machine.py](tictactoe-1.0/state_machine.py). [![state machine thumbnail](state-machine-thumbnail.png)]( -./tictactoe-1.0/state-machine.py) +tictactoe-1.0/state_machine.py) For an extended example of how state machines can be used, including in nested protocols, and with hooks that let custom processing happen at each point in From d22f6099c4cb2b5fd754ff33707a2c9d8cc4b6ad Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Sat, 6 Apr 2019 08:30:18 -0600 Subject: [PATCH 46/61] Add terminology note Signed-off-by: Daniel Hardman --- text/protocols/template.md | 34 ++++++++++++++++++++++++++++------ 1 file changed, 28 insertions(+), 6 deletions(-) diff --git a/text/protocols/template.md b/text/protocols/template.md index a7cf191e3..8d2d80741 100644 --- a/text/protocols/template.md +++ b/text/protocols/template.md @@ -47,12 +47,12 @@ its simpler variants. ### "Roles" under "Tutorial" -This is the next subsection. It gives a formal name to the roles in the -protocol, says who and how many can play each role, and describes constraints -associated with those roles (e.g., "You can only issue a credential if you -have a DID on the public ledger"). The issue of qualification for roles can -also be explored (e.g., "The holder of the credential must be known to the -issuer"). +The "Roles" subsection comes next in a protocol HIPE. It gives a formal name +to each role in the protocol, says who and how many can play each role, and +describes constraints associated with those roles (e.g., "You can only issue +a credential if you have a DID on the public ledger"). The issue of qualification +for roles can also be explored (e.g., "The holder of the credential must be known +to the issuer"). The formal names for each role are important because they are used when [agents discover one another's capabilities]( @@ -64,6 +64,28 @@ different features, but they both use the _credential-issuance_ protocol. By convention, role names use lower-kebab-case but are compared case-insensitively and ignoring punctuation. +>##### Terminology note + +>The __parties__ in a protocol are the identity owners involved. In a protocol +where Alice introduces Bob to Carol, the parties are Alice, Bob, and Carol. + +>The __participants__ in a protocol are the agents that actually move the steps of +the protocol thorugh the interaction. Alice, Bob, and Carol may each have cloud +agents, a laptop, and a phone; if they engage in an introduction protocol using +phones, then the agents on their phones are the participants. If the phones +talk directly over bluetooth, this is particularly clear--but even if the phones +leverage push notifications and HTTP such that cloud agents help with routing, +only the phone agents are participants, because only they maintain state for +the interaction underway. (The cloud agents would be __facilitators__, and +the laptops would be __bystanders__). When a +protocol is complete, the participant agents know about the outcome; they may +need to synchronize or replicate their state before other agents of the +parties are aware. + +>The __roles__ in a protocol are the perspectives that parties take on an +interaction. In an auction protocol, there are only two roles--*auctioneer* +and *bidder*--even though there may be many parties. + ### "States" under "Tutorial" This section lists the possible states that exist for each role. It also From 4fb8d67c64256500cc3bd0434bfd69e58a20d992 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Sat, 6 Apr 2019 09:06:44 -0600 Subject: [PATCH 47/61] Improve terminology; clarify state machines Signed-off-by: Daniel Hardman --- text/protocols/README.md | 13 +++-- text/protocols/parties-roles-participants.md | 22 +++++++ text/protocols/state-details.md | 60 +++++++++++++++----- text/protocols/template.md | 27 ++------- 4 files changed, 80 insertions(+), 42 deletions(-) create mode 100644 text/protocols/parties-roles-participants.md diff --git a/text/protocols/README.md b/text/protocols/README.md index 47f31dbd2..7e852faa7 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -57,7 +57,7 @@ stateful interactions like: #### Types of Protocols The most common protocol style in DID Communication is __request-response__. -This style involve two parties, with the `requester` making the first move, +This style involve two *parties*, with the `requester` making the first move, and the `responder` completing the interaction. The [Protocol Discovery Protocol]( https://github.com/hyperledger/indy-hipe/pull/73) uses this style. @@ -73,9 +73,13 @@ Protocol](https://github.com/hyperledger/indy-hipe/pull/65) use this style. However, more complex protocols exist. The [Introductions Protocol]( https://github.com/hyperledger/indy-hipe/pull/110) involves three parties, -not two. The [Connection Management Protocol]( - https://github.com/hyperledger/indy-hipe/pull/104) may involve dozens or -hundreds of agents, and it has cycles and other complex state evolution. +not two. When the [Connection Management Protocol]( +https://github.com/hyperledger/indy-hipe/pull/104) includes organizations, it +may involve dozens of *participants*, and it has cycles and other complex +state evolution. + +>See [this note](parties-roles-participants.md) for definitions of the terms +"party", "role", and "participant". #### Agent Design @@ -168,6 +172,7 @@ tictactoe-1.0/README.md) is also attached to this HIPE as an example. * [Message Type and Protocol Identifier URIs](uris.md) * [Semver Rules for Protocols](semver.md) * [State Details and State Machines](state-details.md) +* [Parties, Roles, and Participants](parties-roles-participants.md) ## Drawbacks diff --git a/text/protocols/parties-roles-participants.md b/text/protocols/parties-roles-participants.md new file mode 100644 index 000000000..7d3e0e03a --- /dev/null +++ b/text/protocols/parties-roles-participants.md @@ -0,0 +1,22 @@ +# Parties, Roles, and Participants + +The __parties__ in a protocol are the identity owners involved. In a protocol +where Alice introduces Bob to Carol, the parties are Alice, Bob, and Carol. + +The __roles__ in a protocol are the perspectives that parties take on an +interaction. In an auction protocol, there are only two roles--*auctioneer* +and *bidder*--even though there may be many parties. + +The __participants__ in a protocol are the agents that actually move the steps of +the protocol thorugh the interaction. Alice, Bob, and Carol may each have a cloud +agent, a laptop, and a phone; if they engage in an introduction protocol using +phones, then the agents on their phones are the participants. If the phones +talk directly over bluetooth, this is particularly clear--but even if the phones +leverage push notifications and HTTP such that cloud agents help with routing, +only the phone agents are participants, because only they maintain state for +the interaction underway. (The cloud agents would be __facilitators__, and +the laptops would be __bystanders__). When a +protocol is complete, the participant agents know about the outcome; they may +need to synchronize or replicate their state before other agents of the +parties are aware. + diff --git a/text/protocols/state-details.md b/text/protocols/state-details.md index 8ec522ec9..22936740f 100644 --- a/text/protocols/state-details.md +++ b/text/protocols/state-details.md @@ -1,22 +1,52 @@ # State Details and State Machines -Some protocols have only one role, and thus only one state machine. -But in many protocols, different participants may have different state -machines. This section has been neglected in many early efforts at protocol -definition, and its omission is a big miss. Analyzing all possible states -and events for all roles leads to robustness; skipping the analysis leads -to fragility. +Some protocols have only one sequence of states to manage. But in many +protocols, different roles perceive the interaction differently. Each +perspective needs to be described with care. This rigor has been neglected +in many early efforts at protocol definition, and its omission is a big +miss. Analyzing all possible states and events for all roles leads to +robustness; skipping the analysis leads to fragility. ### State machines -Writing a formal state machine to accompany the state matrix of a protocol -is not required, but it is a best practice. For developers who have not worked -with state machines before, this may sound intimidating, but it is actually -quite easy, and it provides a clean encapsulation of logic that would otherwise -be a bunch of conditionals scattered throughout the code. It also provides a -convenient way to load state later, when a message arrives for an interaction -that is only partly complete. And it makes formal testing for completeness and -security much easier. +By convention, our community describes state and sequence rules using the +concept of state machines, and we encourage developers who implement +protocols to build them that way. + +Many developers will have encountered a formal definition of this concept as +they wrote parsers or worked on other highly demanding tasks, and may worry +that state machines are heavy and intimidating. But as they are used in +DIDComm protocols, state machines are straightforward and elegant. They +cleanly encapsulate logic that would otherwise be a bunch of conditionals +scattered throughout agent code. Without a state machine: + +```python +if received_message.type == X and state == Y: + do_something() +... +if received_message.type == X and state in [Y, Z]: + do_something_else() + state = V +... +if event == A and state in [V, W, Z]: + state = Y + do_yet_another_thing() +``` + +With a state machine: + +```python +state_machine.handle(message) # hooks do_something() +... +state_machine.handle(message) # hooks do_something_else() +... +state_machine.handle(message) # hooks do_yet_another_thing() +``` + +Under maintenance, the robustness of the state machine approach is compelling. +It also provides a convenient way to load persisted state later, when a message +arrives for an interaction that is only partly complete. And it makes formal +testing for completeness and security much easier. The tictactoe example includes a complete state machine in less than 50 lines of code. See [state-machine.py](tictactoe-1.0/state_machine.py). @@ -24,7 +54,7 @@ lines of code. See [state-machine.py](tictactoe-1.0/state_machine.py). [![state machine thumbnail](state-machine-thumbnail.png)]( tictactoe-1.0/state_machine.py) -For an extended example of how state machines can be used, including in nested +For an extended discussion of how state machines can be used, including in nested protocols, and with hooks that let custom processing happen at each point in a flow, see [https://github.com/dhh1128/distributed-state-machine]( https://github.com/dhh1128/distributed-state-machine/blob/master/README.md). diff --git a/text/protocols/template.md b/text/protocols/template.md index 8d2d80741..e888ac5ca 100644 --- a/text/protocols/template.md +++ b/text/protocols/template.md @@ -47,6 +47,9 @@ its simpler variants. ### "Roles" under "Tutorial" +>See [this note](parties-roles-participants.md) for definitions of the terms +"party", "role", and "participant". + The "Roles" subsection comes next in a protocol HIPE. It gives a formal name to each role in the protocol, says who and how many can play each role, and describes constraints associated with those roles (e.g., "You can only issue @@ -64,28 +67,6 @@ different features, but they both use the _credential-issuance_ protocol. By convention, role names use lower-kebab-case but are compared case-insensitively and ignoring punctuation. ->##### Terminology note - ->The __parties__ in a protocol are the identity owners involved. In a protocol -where Alice introduces Bob to Carol, the parties are Alice, Bob, and Carol. - ->The __participants__ in a protocol are the agents that actually move the steps of -the protocol thorugh the interaction. Alice, Bob, and Carol may each have cloud -agents, a laptop, and a phone; if they engage in an introduction protocol using -phones, then the agents on their phones are the participants. If the phones -talk directly over bluetooth, this is particularly clear--but even if the phones -leverage push notifications and HTTP such that cloud agents help with routing, -only the phone agents are participants, because only they maintain state for -the interaction underway. (The cloud agents would be __facilitators__, and -the laptops would be __bystanders__). When a -protocol is complete, the participant agents know about the outcome; they may -need to synchronize or replicate their state before other agents of the -parties are aware. - ->The __roles__ in a protocol are the perspectives that parties take on an -interaction. In an auction protocol, there are only two roles--*auctioneer* -and *bidder*--even though there may be many parties. - ### "States" under "Tutorial" This section lists the possible states that exist for each role. It also @@ -114,7 +95,7 @@ diagram types. The formal names for each state are important, as they are used in [`ack`s]( https://github.com/hyperledger/indy-hipe/pull/77) and [`problem-report`s](https://github.com/hyperledger/indy-hipe/pull/65)). For example, a `problem-report` message declares which state the sender -arrived at because of the problem. This helps other parties in an interaction +arrived at because of the problem. This helps other participants to react to errors with confidence. Formal state names are also used in the agent test suite, in log messages, and so forth. From 8ab53b2aaab6a52ec6249235c67188eb6c95f358 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Sat, 6 Apr 2019 09:13:28 -0600 Subject: [PATCH 48/61] Remove bogus line Signed-off-by: Daniel Hardman --- text/protocols/tictactoe-1.0/state_machine.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/text/protocols/tictactoe-1.0/state_machine.py b/text/protocols/tictactoe-1.0/state_machine.py index 07d3716b9..c6d0e65e4 100644 --- a/text/protocols/tictactoe-1.0/state_machine.py +++ b/text/protocols/tictactoe-1.0/state_machine.py @@ -1,5 +1,3 @@ -SEND_MOVE_EVENT = MY_MOVE_STATE = WRAP_UP_STATE = THEIR_MOVE_STATE = RECEIVE_MOVE_EVENT = SEND_OUTCOME_EVENT = RECEIVE_OUTCOME_EVENT = DONE_STATE = 0 - # Define states and events, including symbolic (numeric) constants and their friendly names. STATE_NAMES = ['my-move', 'their-move', 'wrap-up', 'done'] for i in range(len(STATE_NAMES)): From ed492ca3a02515b084bac916b6b56199b47a28a0 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Sat, 6 Apr 2019 09:26:14 -0600 Subject: [PATCH 49/61] further improve state machine discussion Signed-off-by: Daniel Hardman --- text/protocols/state-details.md | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/text/protocols/state-details.md b/text/protocols/state-details.md index 22936740f..c8273b89f 100644 --- a/text/protocols/state-details.md +++ b/text/protocols/state-details.md @@ -44,12 +44,18 @@ state_machine.handle(message) # hooks do_yet_another_thing() ``` Under maintenance, the robustness of the state machine approach is compelling. -It also provides a convenient way to load persisted state later, when a message -arrives for an interaction that is only partly complete. And it makes formal +Compare the approaches for how many places you might have to change if you had +a bug in how state Y is handled... The state machine approach also provides a +convenient way to load persisted state later, when a message arrives for an +interaction that is only partly complete. And it makes formal testing for completeness and security much easier. The tictactoe example includes a complete state machine in less than 50 -lines of code. See [state-machine.py](tictactoe-1.0/state_machine.py). +lines of code. See [state-machine.py](tictactoe-1.0/state_machine.py). The +unit tests prove once and for all that the rules of the tictactoe protocol +(not the rules of the game, but the rules of how moves are communicated +and reacted to) are perfectly followed, in a [similarly brief chunk of code]( +tictactoe-1.0/test_state_machine.py). [![state machine thumbnail](state-machine-thumbnail.png)]( tictactoe-1.0/state_machine.py) From 2db94d7cc65722d18b9f17168425415d4797b1c8 Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Sat, 6 Apr 2019 10:09:59 -0600 Subject: [PATCH 50/61] Add note about decentralized Signed-off-by: Daniel Hardman --- text/protocols/README.md | 14 ++++++++++++++ text/protocols/dance.jpg | Bin 0 -> 23621 bytes 2 files changed, 14 insertions(+) create mode 100644 text/protocols/dance.jpg diff --git a/text/protocols/README.md b/text/protocols/README.md index 7e852faa7..63c608279 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -54,6 +54,20 @@ stateful interactions like: * Negotiating * Cooperative debugging +#### Decentralized + +As used in the agent/DIDComm world, protocols are _decentralized_. This means +there is not an overseer for the protocol, guaranteeing information flow, +enforcing behaviors, and ensuring a coherent view. It is a subtle but +important divergence from API-centric approaches, where a server holds +state against which all other parties (clients) operate. Instead, all +parties are peers, and they interact by mutual consent and with a (hopefully) +shared understanding of the rules and goals. They are like a dance--not one +that's choreographed or directed, but like one where the parties make dynamic +decisions and and react to them. + +![dance](dance.jpg) + #### Types of Protocols The most common protocol style in DID Communication is __request-response__. diff --git a/text/protocols/dance.jpg b/text/protocols/dance.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ca6a38ad5a4243453023a5cc4ee3a45ea6447e66 GIT binary patch literal 23621 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 Date: Sat, 6 Apr 2019 10:10:46 -0600 Subject: [PATCH 51/61] wordsmith Signed-off-by: Daniel Hardman --- text/protocols/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/text/protocols/README.md b/text/protocols/README.md index 63c608279..11496387a 100644 --- a/text/protocols/README.md +++ b/text/protocols/README.md @@ -62,8 +62,8 @@ enforcing behaviors, and ensuring a coherent view. It is a subtle but important divergence from API-centric approaches, where a server holds state against which all other parties (clients) operate. Instead, all parties are peers, and they interact by mutual consent and with a (hopefully) -shared understanding of the rules and goals. They are like a dance--not one -that's choreographed or directed, but like one where the parties make dynamic +shared understanding of the rules and goals. Protocols are like a dance--not one +that's choreographed or directed, but one where the parties make dynamic decisions and and react to them. ![dance](dance.jpg) From 840dc1bc1ee5530c497af174b8f24e6eca10383e Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Tue, 9 Apr 2019 13:27:37 -0600 Subject: [PATCH 52/61] Fix mtype regex for final capture group Signed-off-by: Daniel Hardman --- text/protocols/uris.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/text/protocols/uris.md b/text/protocols/uris.md index fa996600b..34f9f14cb 100644 --- a/text/protocols/uris.md +++ b/text/protocols/uris.md @@ -9,7 +9,12 @@ A __message type URI__ (MTURI) identifies message types unambiguously. Standardizing its format is important because it is parsed by agents that will map messages to handlers--basically, code will look at this string and say, "Do I have something that can handle this message type inside protocol -*X* version *Y*?" The URI MUST be composed as follows: +*X* version *Y*?" When that analysis happens, it must do more than compare +the string for exact equality; it may need to check for semver compatibility, +and it has to compare the protocol name and message type name ignoring case +and punctuation. + +The URI MUST be composed as follows: ![MTURI structure](mturi-structure.png) @@ -25,7 +30,7 @@ identifier = alpha *(*(alphanumeric / "_" / "-" / ".") alphanumeric) It can be loosely matched and parsed with the following regex: - (.*?)([a-z0-9._-]+)/(\d[^/]*)/[a-z0-9._-]+$ + (.*?)([a-z0-9._-]+)/(\d[^/]*)/([a-z0-9._-]+)$ A match will have captures groups of (1) = `doc-uri`, (2) = `protocol-name`, (3) = `protocol-version`, and (4) = `message-type-name`. From a1b4544da66c47a2682f9e92103d1f0c2b04a42a Mon Sep 17 00:00:00 2001 From: Daniel Hardman Date: Tue, 9 Apr 2019 20:16:35 -0600 Subject: [PATCH 53/61] Add section on protocol version negotiation Signed-off-by: Daniel Hardman --- .../protocols/protocol-negotiation-matrix.png | Bin 0 -> 65013 bytes text/protocols/semver.md | 64 ++++++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 text/protocols/protocol-negotiation-matrix.png diff --git a/text/protocols/protocol-negotiation-matrix.png b/text/protocols/protocol-negotiation-matrix.png new file mode 100644 index 0000000000000000000000000000000000000000..9047884665f87e87b7e8cc5900266f4c9416bfca GIT binary patch literal 65013 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 z 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 Date: Tue, 9 Apr 2019 20:33:45 -0600 Subject: [PATCH 54/61] Improve version negotiation section Signed-off-by: Daniel Hardman --- .../protocols/protocol-negotiation-matrix.png | Bin 65013 -> 0 bytes text/protocols/semver.md | 40 +++++++++++------- text/protocols/version-negotiation-matrix.png | Bin 0 -> 71242 bytes 3 files changed, 24 insertions(+), 16 deletions(-) delete mode 100644 text/protocols/protocol-negotiation-matrix.png create mode 100644 text/protocols/version-negotiation-matrix.png diff --git a/text/protocols/protocol-negotiation-matrix.png b/text/protocols/protocol-negotiation-matrix.png deleted file mode 100644 index 9047884665f87e87b7e8cc5900266f4c9416bfca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65013 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 z 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 1, recipients should also accept messages that differ only in that +the message's minor version is earlier than their own preference. In such a case, the +recipient should degrade gracefully to use the earlier version of the protocol. If the +earlier version lacks important features, the recipient may optionally choose to send, +in addition to a response, a `problem-report` with code `version-with-degraded-features`. If a recipient supports protocol X version 1.0, it should tentatively accept messages with later minor versions (e.g., 1.2). Message types that @@ -70,15 +78,15 @@ that 1.2 added. Thus, accepting such a message could have two possible outcomes: 2. The message might contain some fields that are unrecognized and need to be ignored. In case 2, it is best practice for the recipient to send a `problem-report` that -is a *warning*, not an *error*, announcing that some fields could not be processed. -Such a message is *in addition to* any response that the protocol demands of the -recipient. +is a *warning*, not an *error*, announcing that some fields could not be processed +(code = `fields-ignored-due-to-version-mismatch`). Such a message is *in addition +to* any response that the protocol demands of the recipient. If the recipient of a protocol's initial message generates a response, the response should use the latest major.minor protocol version that both parties support and -know about. +know about. Generally, all messages after the first use only major.minor -[![protocol negotiation matrix](protocol-negotiation-matrix.png)]( +[![version negotiation matrix](version-negotiation-matrix.png)]( https://docs.google.com/spreadsheets/d/1W5KYOqCCqmTeU4Z7XZQH9_6_0TeP5Vf5TtsOZmioyB0/edit#gid=0) diff --git a/text/protocols/version-negotiation-matrix.png b/text/protocols/version-negotiation-matrix.png new file mode 100644 index 0000000000000000000000000000000000000000..d61c3b1a544c8a4afcfe77dc8d9a9e11086ad896 GIT binary patch literal 71242 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πQBx^dL*Ov_CH0TW%`>uYdSWtmAxz&-&D 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 z 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