summary refs log tree commit diff
path: root/synapse/handlers (follow)
Commit message (Expand)AuthorAgeFilesLines
* Fix AttributeErrorErik Johnston2014-12-101-1/+1
* Make depth increase.Erik Johnston2014-12-101-1/+1
* Try and figure out how and why signatures are being changed.Erik Johnston2014-12-103-9/+53
* PEP8Erik Johnston2014-12-091-1/+1
* Fix joining from an inviteErik Johnston2014-12-093-16/+17
* Remove unused snapshotErik Johnston2014-12-091-2/+0
* Remove unused importErik Johnston2014-12-091-2/+1
* More bug fixesErik Johnston2014-12-082-19/+31
* More bug fixesErik Johnston2014-12-083-10/+13
* More bug fixesErik Johnston2014-12-082-3/+7
* Fix registrationErik Johnston2014-12-081-2/+4
* Various typos and bug fixes.Erik Johnston2014-12-082-62/+43
* Start making more things use EventContext rather than event.*Erik Johnston2014-12-052-99/+84
* Merge branch 'develop' of github.com:matrix-org/synapse into events_refactorErik Johnston2014-12-041-5/+7
|\
| * @log_function on PresenceStream's get_new_events_for_user()Paul "LeoNerd" Evans2014-12-031-1/+3
| * Store any incoming presence push in the local cache anyway, even if there's n...Paul "LeoNerd" Evans2014-12-031-4/+4
* | Convert rest and handlers to use new event structureErik Johnston2014-12-046-116/+111
* | Begin converting things to use the new Event structureErik Johnston2014-12-043-19/+56
* | WIP for new way of managing events.Erik Johnston2014-12-031-0/+51
* | Merge branch 'develop' of github.com:matrix-org/synapse into events_refactorErik Johnston2014-12-032-1/+10
|\|
| * Extra verbosity on logging of received presence infoPaul "LeoNerd" Evans2014-12-021-0/+5
| * Squash room_ids list to a set() to remove duplicates - with TODO marker as I ...Paul "LeoNerd" Evans2014-12-021-1/+5
* | Change DomainSpecificString so that it doesn't use a HomeServer objectErik Johnston2014-12-026-41/+44
|/
* Fix bugs when joining a remote room that has dodgy event graphs. This should ...Erik Johnston2014-11-271-28/+55
* on_receive_pdu takes more argsErik Johnston2014-11-271-3/+3
* Change the way we get missing auth and state eventsErik Johnston2014-11-271-16/+61
* Re-sign events when we return them via federation as a temporary hack to work...Erik Johnston2014-11-271-0/+11
* Attempt to fix bug where we 500d an event stream due to trying to cancel a ti...Erik Johnston2014-11-261-3/+9
* Add a workaround for bug where some initial join events don't reference creat...Erik Johnston2014-11-261-1/+7
* Catch exceptions when trying to add an entry to rooms tablesErik Johnston2014-11-261-6/+11
* Correctly handle the case where we get an event for an unknown room, which tu...Erik Johnston2014-11-261-28/+44
* Fix bugs in invite/join dances.Erik Johnston2014-11-253-54/+94
* We don't always want to Auth get_persisted_pduErik Johnston2014-11-241-7/+8
* Return 404 M_NOT_FOUND when trying to look up a room alias that doesn't existMark Haines2014-11-211-12/+24
* SYN-58: Allow passing explicit limit=0 to initialSync to request no messages ...Paul "LeoNerd" Evans2014-11-201-1/+1
* Fix pep8 and pyflakes warningsMark Haines2014-11-202-4/+10
* Merge branch 'develop' into http_client_refactorDavid Baker2014-11-209-48/+64
|\
| * Fix pep8 codestyle warningsMark Haines2014-11-204-9/+13
| * Add a few missing yields, Move deferred lists inside PreserveLoggingContext b...Mark Haines2014-11-208-40/+52
* | Separate out the matrix http client completely because just about all of its ...David Baker2014-11-202-10/+16
* | Oops, I removed this param.David Baker2014-11-201-2/+0
* | Refactor the HTTP clients a little.David Baker2014-11-202-5/+5
|/
* SYN-153: Fix formatting of federation error messageMark Haines2014-11-201-1/+1
* Don't add a 'prev' key to m.room.member messagesErik Johnston2014-11-192-4/+0
* Initialise UserPresenceCache instances to always contain a 'presence' keyPaul "LeoNerd" Evans2014-11-191-4/+2
* SYN-153: Raise 404 if room alias is not foundMark Haines2014-11-191-4/+8
* Preserve logging context in a few more places, drop the logging context after...Mark Haines2014-11-191-3/+5
* Remove unused variableMark Haines2014-11-181-1/+1
* Rename message handler's new snapshot_room to room_initial_sync() as that bet...Paul "LeoNerd" Evans2014-11-181-1/+1
* Merge remote-tracking branch 'origin/develop' into room-initial-syncPaul "LeoNerd" Evans2014-11-182-45/+42
|\
| * SYN-149: Enable auth for events added during room creation since they should ...Mark Haines2014-11-181-1/+1
| * SYN-149: Send join event immediately after the room create eventMark Haines2014-11-182-26/+26
| * Split out sending the room alias events from creating the alias so that we ca...Mark Haines2014-11-182-19/+16
* | Include room members' presence in room initialSyncPaul "LeoNerd" Evans2014-11-181-1/+22
* | Added ability to .get_state() from the PresenceHandler by returning a complet...Paul "LeoNerd" Evans2014-11-181-2/+15
* | Don't expect all _user_cachemap entries to definitely contain a "last_active"...Paul "LeoNerd" Evans2014-11-181-3/+3
* | Include 'messages' snapshot in room initialSyncPaul "LeoNerd" Evans2014-11-181-1/+20
* | Merge branch 'develop' into room-initial-syncPaul "LeoNerd" Evans2014-11-176-297/+579
|\|
| * SYN-148: Add the alias after creating the roomMark Haines2014-11-171-9/+9
| * These lines aren't doing anythingMark Haines2014-11-171-5/+0
| * Merge PDUs and Events into one objectMark Haines2014-11-141-43/+22
| * Fix PDU and event signaturesMark Haines2014-11-141-2/+3
| * Validate signatures on incoming eventsMark Haines2014-11-141-2/+35
| * Add a few more comments to the federation handlerErik Johnston2014-11-121-0/+32
| * Fix bugs with invites/joins across federatiom.Erik Johnston2014-11-122-11/+11
| * PEP8ifyErik Johnston2014-11-111-9/+12
| * Only allow people in a room to look up room state.Erik Johnston2014-11-111-34/+4
| * Rename annotate_state_groups to annotate_event_with_stateErik Johnston2014-11-112-8/+8
| * Fix bug where we /always/ created a new state groupErik Johnston2014-11-111-1/+2
| * Add an EventValidator. Fix bugs in auth ++ storageErik Johnston2014-11-101-4/+7
| * PEP8Erik Johnston2014-11-101-1/+4
| * Add auth to the various server-server APIsErik Johnston2014-11-101-2/+13
| * Fix backfill to work. Add auth to backfill requestErik Johnston2014-11-101-5/+5
| * Notify users about invites.Erik Johnston2014-11-101-1/+4
| * Use current state to get room hosts, rather than querying the databaseErik Johnston2014-11-072-7/+32
| * Add '/event_auth/' federation apiErik Johnston2014-11-071-0/+5
| * Implement invite part of invite join danceErik Johnston2014-11-073-21/+61
| * Return auth chain when handling send_joinErik Johnston2014-11-071-3/+12
| * Fix joining over federationErik Johnston2014-11-072-53/+2
| * Start implementing auth chainsErik Johnston2014-11-071-2/+57
| * Amalgamate all power levels.Erik Johnston2014-11-061-36/+16
| * Update to use replaces_state rather than prev_stateErik Johnston2014-11-061-2/+4
| * Implement new replace_state and changed prev_stateErik Johnston2014-11-065-32/+10
| * Fix auth checks to all use the given old_event_stateErik Johnston2014-11-052-8/+17
| * Fix room handler testsErik Johnston2014-11-041-1/+0
| * Don't bother lockingErik Johnston2014-11-041-6/+5
| * On AuthError, raise a FederationErrorErik Johnston2014-11-041-1/+9
| * Remove unused importsErik Johnston2014-11-041-4/+2
| * Rename PDU fields to match that of events.Erik Johnston2014-11-031-7/+5
| * Sign events we create.Erik Johnston2014-11-031-0/+9
| * Merge branch 'develop' of github.com:matrix-org/synapse into federation_autho...Erik Johnston2014-11-031-2/+1
| |\
| * | Actually don't store any PDUsErik Johnston2014-10-311-0/+22
| * | Move the impl of backfill to use events.Erik Johnston2014-10-311-1/+26
| * | Convert event ids to be of the form :example.comErik Johnston2014-10-301-2/+5
| * | Make federation return the old current state, so that we can use it to do authErik Johnston2014-10-301-5/+23
| * | Merge branch 'develop' of github.com:matrix-org/synapse into federation_autho...Erik Johnston2014-10-306-79/+53
| |\ \
| * | | Start filling out and using new events tablesErik Johnston2014-10-292-39/+55
| * | | Merge branch 'develop' of github.com:matrix-org/synapse into federation_autho...Erik Johnston2014-10-272-14/+5
| |\ \ \
| * | | | It doesn't want a dictErik Johnston2014-10-171-2/+0
| * | | | Fix bug where people could join private roomsErik Johnston2014-10-171-2/+8
| * | | | Use state groups to get current state. Make join dance actually work.Erik Johnston2014-10-172-24/+56
| * | | | Finish implementing the new join dance.Erik Johnston2014-10-171-97/+84
| * | | | Start implementing the invite/join dance. Continue moving auth to use event.s...Erik Johnston2014-10-161-8/+75
| * | | | Begin making auth use event.old_state_eventsErik Johnston2014-10-156-27/+36
* | | | | Include room membership in room initialSyncPaul "LeoNerd" Evans2014-11-101-1/+7
* | | | | Put room state in room initialSync output - I guess this is right; I really c...Paul "LeoNerd" Evans2014-11-101-2/+5
* | | | | Have room initialSync return the room's room_idPaul "LeoNerd" Evans2014-11-101-0/+11
| |_|_|/ |/| | |
* | | | Use python logger, not the twisted loggerErik Johnston2014-11-031-2/+1
| |_|/ |/| |
* | | Fix pep8 warningsMark Haines2014-10-304-31/+33
* | | Fix an off-by-one bug in presence event stream pagination; this might be resp...Paul "LeoNerd" Evans2014-10-291-1/+1
* | | Construct a source-specific 'SourcePaginationConfig' to pass into get_paginat...Paul "LeoNerd" Evans2014-10-294-39/+19
* | | Remove redundant (and incorrect) presence pagination fetching codePaul "LeoNerd" Evans2014-10-291-3/+0
* | | Remove duplicate join_event from create_roomMark Haines2014-10-271-5/+0
| |/ |/|
* | Add get_json method to 3pid http client. Better logging for errors in 3pid re...Mark Haines2014-10-201-1/+2
* | SPEC-7: Don't stamp event contents with 'hsob_ts'Mark Haines2014-10-171-13/+3
|/
* Fix pyflakes errorsMark Haines2014-10-021-1/+1
* Add a keyword argument to get_json to avoid retrying on DNS failures. Rather ...Mark Haines2014-10-021-3/+2
* Split PlainHttpClient into separate clients for talking to Identity servers a...Mark Haines2014-10-023-8/+13
* SYN-2: Allow server admins to delete room aliasesErik Johnston2014-09-301-16/+29
* SYN-48: Implement WHOIS rest servletErik Johnston2014-09-292-0/+64
* Merge branch 'deletions' of github.com:matrix-org/synapse into developErik Johnston2014-09-251-0/+1
|\
| * Rename deletions to redactionsErik Johnston2014-09-241-1/+1
| * SYN-12: Implement auth for deletion by adding a 'delete_level' on the ops lev...Erik Johnston2014-09-231-0/+1
* | SYN-46: An invite received from fedearation didn't wake up the event stream f...Erik Johnston2014-09-251-1/+9
* | Don't set the room name to be the room alias on room creation if the client d...Erik Johnston2014-09-241-11/+0
* | Implemented /rooms/$roomid/state API.Kegan Dougal2014-09-231-0/+16
|/
* SYWEB-3 : Added 'visibility' key to rooms returned via /initialSyncKegan Dougal2014-09-171-0/+5
* SYN-40: When a user updates their displayname or avatar update all their join...Erik Johnston2014-09-171-3/+43
* Added support for the HS to send emails. Use it to send password resets. Adde...Kegan Dougal2014-09-161-0/+14
* Added PasswordResetRestServlet. Hit the IS to confirm the email/user. Need to...Kegan Dougal2014-09-161-1/+28
* Correctly handle receiving 'missing' Pdus from federation, rather than just d...Erik Johnston2014-09-151-7/+5
* Improve logging in federation handler.Erik Johnston2014-09-151-1/+3
* Merge branch 'develop' of github.com:matrix-org/synapse into registration-api...Kegan Dougal2014-09-153-10/+8
|\
| * Correctly handle the 'age' key in events and pdusErik Johnston2014-09-153-10/+8
* | Split out password/captcha/email logic.Kegan Dougal2014-09-151-56/+64
|/
* Added num_joined_users key to /publicRooms for each room. Show this informati...Kegan Dougal2014-09-081-0/+6
* Fix race in presence handler where we evicted things from cache while handlin...Erik Johnston2014-09-081-2/+3
* Added captcha support on both the HS and web client.Kegan Dougal2014-09-051-6/+62
|\
| * Reload captchas when they fail. Cleanup on success.Kegan Dougal2014-09-051-2/+2
| * 80 chars pleaseKegan Dougal2014-09-051-9/+19
| * Add config opion for XFF headers when performing ReCaptcha auth.Kegan Dougal2014-09-051-0/+1
| * Captchas now work on registration. Missing x-forwarded-for config arg support...Kegan Dougal2014-09-051-2/+47
* | Add support for inviting people when you create a roomErik Johnston2014-09-061-0/+26
* | Generate m.room.aliases event when the HS creates a room aliasErik Johnston2014-09-054-15/+42
|/
* Change the default power levels to be 0, 50 and 100Erik Johnston2014-09-051-8/+8
* Error code must be an integerErik Johnston2014-09-031-1/+1
* Import SynapseErrorErik Johnston2014-09-031-0/+1
* Handle timeouts slightly nicer.Erik Johnston2014-09-031-1/+5
* Don't do auth for change_membership in federation handler, it doesn't work an...Erik Johnston2014-09-031-2/+3
* When creating a room and a user supplies a room_alias but no name, use the ro...Erik Johnston2014-09-031-0/+11
* Merge branch 'develop' of github.com:matrix-org/synapse into developDavid Baker2014-09-0312-60/+108
|\
| * fix the copyright holder from matrix.org to OpenMarket Ltd, as matrix.org has...Matthew Hodgson2014-09-0312-12/+12
| * Fix up directory server to not require uploading room hosts. Update the room ...Erik Johnston2014-09-031-1/+10
| * Snapshot prev_state for generic eventsErik Johnston2014-09-031-1/+6
| * Kill the statePaul "LeoNerd" Evans2014-09-031-26/+5
| * Bugfix for back-pagination of presencePaul "LeoNerd" Evans2014-09-031-0/+2
| * Make retrying requests on DNS failures configurable, and turn off retrying on...Kegan Dougal2014-09-031-1/+5
| * Implement presence state visibilty limiting when polling eventsource for streamPaul "LeoNerd" Evans2014-09-031-9/+57
| * Update API docs to use 'presence' key not 'state'. Fixed error messages when ...Kegan Dougal2014-09-031-1/+1
| * Fixed GET /events/$id to be not broken.Kegan Dougal2014-09-031-1/+3
| * Rename the 'do_users_share_a_room' to something slightly less verb-soundingPaul "LeoNerd" Evans2014-09-031-1/+1
| * Neater is_presence_visible() codePaul "LeoNerd" Evans2014-09-031-9/+8
* | Add support for registering with a threepid to the HS (get credentials from t...David Baker2014-09-031-3/+59
|/
* Add copyright notices and fix pyflakes errorsMark Haines2014-09-031-2/+0
* Set status message for ratelimit error responsesMark Haines2014-09-031-1/+1
* Merge branch 'ratelimiting' into developMark Haines2014-09-033-0/+18
|\
| * Raise LimitExceedError when the ratelimiting is throttling requestsMark Haines2014-09-031-4/+2
| * rate limiting for message sendingMark Haines2014-09-023-2/+5
| * Add ratelimiting function to basehandlerMark Haines2014-09-021-0/+17
* | Safer handling of incoming presence EDUs that may or maynot contain 'presence...Paul "LeoNerd" Evans2014-09-021-3/+13
* | 'continue' to go to the next item in a for loop, not 'break'Paul "LeoNerd" Evans2014-09-021-1/+1
* | By default, only room ops can change the name and topic.Erik Johnston2014-09-021-0/+2
|/
* Add message to assertionErik Johnston2014-09-021-1/+1
* Add support for setting room name and topic when creating roomsErik Johnston2014-09-021-4/+29
* Reënable presence visibility permission checking now it's not used on redund...Paul "LeoNerd" Evans2014-09-011-4/+0
* No need to test is_presence_visible in _start_polling_local because we know i...Paul "LeoNerd" Evans2014-09-011-4/+0
* Don't set a 'default' key in the creation eventErik Johnston2014-09-011-1/+0
* Don't put required power levels on permission state eventsErik Johnston2014-09-011-2/+4
* Add all the necessary checks to make banning work.Erik Johnston2014-09-011-1/+11
* Merge branch 'develop' of github.com:matrix-org/synapse into room_configErik Johnston2014-09-012-33/+93
|\
| * Bump a user's presence last_active time every time they send a message to a roomPaul "LeoNerd" Evans2014-09-012-0/+10
| * Perform room unit tests with 'local' users actually in the right domain ;)Paul "LeoNerd" Evans2014-09-011-0/+4
| * Rename API-visible 'mtime' presence field to 'last_active'; slightly differen...Paul "LeoNerd" Evans2014-09-011-23/+49
| * Rename 'state' presence key to the much more obvious 'presence'; maintain a l...Paul "LeoNerd" Evans2014-09-011-11/+31
* | Add beginnings of ban support.Erik Johnston2014-09-011-20/+29
* | Implement power level lists, default power levels and send_evnet_level/add_st...Erik Johnston2014-09-011-9/+22
* | Merge branch 'develop' of github.com:matrix-org/synapse into room_configErik Johnston2014-09-014-12/+143
|\|
| * Bugfixes on presence pushes on user joining:Paul "LeoNerd" Evans2014-08-291-9/+8
| * Renamed get_current_token_part to get_current_keyPaul "LeoNerd" Evans2014-08-293-4/+4
| * Have EventSource's get_new_events_for_user() API work only on keys within tha...Paul "LeoNerd" Evans2014-08-293-17/+9
| * TypingNotificationEventSource has to return proper tokens, not int 0Paul "LeoNerd" Evans2014-08-291-2/+2
| * Rename 'events_key' to 'room_key' so it matches the name of the event sourcePaul "LeoNerd" Evans2014-08-292-8/+8
| * Define a new event stream data source for typing notifications (currently null)Paul "LeoNerd" Evans2014-08-291-0/+14
| * Move the *EventSource classes into the handlers they relate to, so it's easie...Paul "LeoNerd" Evans2014-08-292-0/+126
* | Merge branch 'develop' of github.com:matrix-org/synapse into room_configErik Johnston2014-08-297-134/+166
|\|
| * Get the equalities right.Erik Johnston2014-08-291-2/+5
| * Merge branch 'presence_logging' into developErik Johnston2014-08-292-90/+132
| |\
| | * Fix a couple of bugs in presence handler related to pushing updatesto the cor...Erik Johnston2014-08-291-18/+41
| | * Turn of trace_function loggingErik Johnston2014-08-281-8/+8
| | * Only poll remote users if they are in our presence list, rather than in a com...Erik Johnston2014-08-281-53/+66
| | * Don't query the rooms members table so much by using the new notifier api tha...Erik Johnston2014-08-282-62/+46
| | * Merge branch 'develop' of github.com:matrix-org/synapse into presence_loggingErik Johnston2014-08-284-40/+34
| | |\
| | * | Up timeout to 10 minutesErik Johnston2014-08-281-1/+1
| | * | And more logging.Erik Johnston2014-08-281-0/+1
| | * | Add more logging. Up the event stream timer to 10sErik Johnston2014-08-282-1/+4
| | * | Add logging to try and figure out what is going on with the presence stuffErik Johnston2014-08-282-2/+12
| * | | Fix FederationHandler to event.originMark Haines2014-08-281-1/+1
| | |/ | |/|
| * | Only send presence "poll"/"unpoll" EDUs when changing from/to zero remotesPaul "LeoNerd" Evans2014-08-281-2/+14
| * | Re-enable presence, un-skip presence testsPaul "LeoNerd" Evans2014-08-281-8/+0
| * | Remove get_state_for_room function from federation handlerMark Haines2014-08-281-15/+11
| * | Fix pyflakes warningsMark Haines2014-08-283-5/+4
| * | Merge backfill_ and backfill in federation handlerMark Haines2014-08-281-18/+5
| |/
| * Fix bug where we used UserID objects instead of strignsErik Johnston2014-08-281-1/+2
* | Create the correct events with the right configuration when creating a new room.Erik Johnston2014-08-281-19/+54
|/
* Split out MessageHandlerErik Johnston2014-08-273-276/+305
* Merge branch 'develop' into storage_transactionsMark Haines2014-08-271-1/+1
|\
* | Merge branch 'develop' into storage_transactionsMark Haines2014-08-275-145/+76
|\|
| * Remove stale FIXMEsErik Johnston2014-08-271-2/+0
| * Remove store_id from notifier.on_new_room_event calls.Erik Johnston2014-08-272-13/+8
| * Turn off presence again.Erik Johnston2014-08-271-2/+2
| * Index sources in a nicer fashion.Erik Johnston2014-08-271-2/+2
| * Convert get_paginat_rows to use PaginationConfig. This allows people to suppl...Erik Johnston2014-08-271-8/+7
| * PEP8 tweaks.Erik Johnston2014-08-272-4/+9
| * Merge branch 'develop' of github.com:matrix-org/synapse into stream_refactorErik Johnston2014-08-273-23/+227
| |\
| * | Implement presence event source. Change the way the notifier indexes listenersErik Johnston2014-08-273-12/+17
| * | Enable presence again. Fix up api to match old api.Erik Johnston2014-08-263-7/+14
| * | WIP: Completely change how event streaming and pagination work. This reflects...Erik Johnston2014-08-263-158/+44
* | | Merge branch 'develop' into storage_transactionsMark Haines2014-08-272-0/+148
|\ \ \ | | |/ | |/|
| * | Initial typing notification support - EDU federation, but no timers, and no a...Paul "LeoNerd" Evans2014-08-272-0/+148
* | | add _get_room_member, fix datastore methodsMark Haines2014-08-272-3/+4
* | | Start updating state handling to use snapshotsMark Haines2014-08-271-3/+10
* | | Fill out prev_events before calling persist_eventMark Haines2014-08-272-59/+13
* | | Merge branch 'develop' into storage_transactionsMark Haines2014-08-273-2/+33
|\| |
| * | Added support for GET /events/$eventid with auth checks.Kegan Dougal2014-08-272-1/+28
| |/
| * Respect 'limit' param in initialSync apiErik Johnston2014-08-261-1/+5
* | Fold federation/handler into handlers/federationMark Haines2014-08-263-10/+138
* | Move new event boilerplate in room handlers into a method on a base clase.Mark Haines2014-08-262-52/+33
* | Merge branch 'develop' into storage_transactionsMark Haines2014-08-261-1/+1
|\|
| * Use state_key rather than target_user_idMark Haines2014-08-261-1/+1
* | Use state_key rather than target_user_idMark Haines2014-08-261-1/+1
* | Merge branch 'develop' into storage_transactionsMark Haines2014-08-264-23/+79
|\|
| * Fix pyflakes errorsMark Haines2014-08-263-7/+3
| * Add a do_users_share_a_room method and use that in the presence handler.Erik Johnston2014-08-261-5/+4
| * Merge branch 'develop' of github.com:matrix-org/synapse into client_server_ur...Kegan Dougal2014-08-264-6/+65
| |\
| | * Oops, we need to use defer.returnValue.Erik Johnston2014-08-221-1/+2
| | * Make is_presence_visible always return true as it was thrashing the database.Erik Johnston2014-08-221-0/+3
| | * Turn off more spammy logging.Erik Johnston2014-08-221-1/+1
| | * Add indices to schemaErik Johnston2014-08-221-0/+4
| | * Change IM sync api to also return the current presence list.Erik Johnston2014-08-211-3/+21
| | * In the initial sync api, return the inviter for rooms in the 'invited' stateErik Johnston2014-08-211-0/+4