Compare commits
49 Commits
techflash2
...
gh-pages
Author | SHA1 | Date |
---|---|---|
Nemo | b503a66fe6 | |
Nemo | e857dc7a77 | |
Nemo | da8fade08d | |
Nemo | 6ce8c3f9a1 | |
Nemo | 26f564fd4e | |
Nemo | 372c4faae4 | |
Nemo | a55085c574 | |
Nemo | 3e3b268886 | |
Nemo | 9b4d1ef187 | |
Nemo | 013177a4c6 | |
Nemo | 72df5bf05a | |
Nemo | f753bbc2ef | |
Nemo | c87804e725 | |
Nemo | 324ef76ba9 | |
Nemo | a6ef975f0a | |
Nemo | 1e821d200d | |
Nemo | 0b14ca4bbe | |
Nemo | 1a55e84e47 | |
Nemo | bb45ee9f2d | |
Nemo | c19fa916ca | |
Nemo | 3c3ed1c654 | |
Nemo | 1377244a81 | |
Nemo | 6fc88ec893 | |
Nemo | da7e44c5f5 | |
Nemo | 34ea68c146 | |
Nemo | 69f3d5f71c | |
Nemo | 560a98a1ca | |
Nemo | 945c4eccb4 | |
Nemo | e2ac12b718 | |
Nemo | d1f007d9a0 | |
Nemo | 6b0831cc17 | |
Nemo | 8473af2828 | |
Nemo | 4c75a43637 | |
Nemo | 3190404b70 | |
Nemo | accf162d09 | |
Nemo | 67abc714be | |
Nemo | c2234e680a | |
Nemo | 30055afd31 | |
Nemo | 885ab87518 | |
Nemo | 20ae0f21f0 | |
Nemo | d36e223e0b | |
Nemo | 929244f66d | |
Nemo | c496d3b16f | |
Nemo | 19b2538a8d | |
Nemo | 14c7806375 | |
Nemo | 51ba5cc413 | |
Nemo | b768cb229f | |
Nemo | e5b35f532d | |
Nemo | 5f2761d3bd |
81
README.md
|
@ -1,16 +1,71 @@
|
|||
Various talks & Lectures that I have given
|
||||
|
||||
1. ux - UX & Usability Designing ([SpeakerDeck](https://speakerdeck.com/u/captn3m0/p/ux-and-usability-designing) [Online](https://captnemo.in/talks/ux/ 'Made via Reveal.js'))
|
||||
2. [Software Development 101](https://speakerdeck.com/u/captn3m0/p/software-development-101 'Internal talk at SDSLabs')
|
||||
3. [Intro to Linux](https://speakerdeck.com/captn3m0/linux-user-group-intro-meet-august-2013 'A very basic intro to linux')
|
||||
4. [Browser Extension Security](https://speakerdeck.com/captn3m0/browser-extension-security) - [Nullcon 2014](https://github.com/captn3m0/nullcon2014 'Source code and more details')
|
||||
5. [Joy of Software Development](https://captnemo.in/talks/josd/ 'Open lecture about getting started with Software Development')
|
||||
6. [HTTP](https://speakerdeck.com/captn3m0/http-an-insight-into-the-worlds-most-used-protocol 'Internal talk at SDSLabs')
|
||||
7. [Fun with HTTP](http://slides.com/captn3m0/fun-with-http) - Talk at Barcamp Bangalore about how HTTP can be a really fun protocol
|
||||
8. [Security Horror Stories in Payments](https://speakerdeck.com/captn3m0/security-horror-stories-in-payments) - Talk at the 50p Conference (2017) [[Video]](https://www.youtube.com/watch?v=_M-cftlhYKI) Talk about several security gotchas I've witnessed working in payments. Given at 50p, a HasGeek conference on Digital Payments in India.
|
||||
9. [Billion Dollar Hacking](https://speakerdeck.com/captn3m0/billion-dollar-hacking) - A short talk at a Dev/Hacker meetup about the recent SWIFT bank hacks. I repeated this talk at hillhacks 2016.
|
||||
10. [Indian Financial Systems Code](http://slides.com/captn3m0/indian-financial-systems-code#/) - A short talk on IFSC Codes and how they work in India.
|
||||
11. [Terraforming Tatooine](https://www.beautiful.ai/deck/-L4w5j_sJ9XkKnzf1OXt) - A short talk at [Barcamp Bangalore Spring 2018](https://barcampbangalore.com/bcb/bcb-spring-2018/terraform-docker-nemo) on how I manage my home server using Terraform and Docker. PDF version is available at [speakerdeck](https://speakerdeck.com/captn3m0/terraforming-tatooine)
|
||||
12. [crypto.koans](/talks/crypto.koans/) - Koans to help you learn openssl/PKI.
|
||||
# Ongoing: [FOSS United Workshop - My Computer My Data My Code](https://slides.com/captn3m0/data-liberation/). Notes: https://hackmd.io/@captn3m0/SknVQFN2a
|
||||
|
||||
1. ux - UX & Usability Designing
|
||||
([SpeakerDeck](https://speakerdeck.com/u/captn3m0/p/ux-and-usability-designing)
|
||||
[Online](https://captnemo.in/talks/ux/ "Made via Reveal.js"))
|
||||
2. [Software Development 101](https://speakerdeck.com/u/captn3m0/p/software-development-101 "Internal talk at SDSLabs")
|
||||
3. [Intro to Linux](https://speakerdeck.com/captn3m0/linux-user-group-intro-meet-august-2013 "A very basic intro to linux")
|
||||
4. [Browser Extension Security](https://speakerdeck.com/captn3m0/browser-extension-security) -
|
||||
[Nullcon 2014](https://github.com/captn3m0/nullcon2014 "Source code and more details")
|
||||
5. [Joy of Software Development](https://captnemo.in/talks/josd/ "Open lecture about getting started with Software Development")
|
||||
6. [HTTP](https://speakerdeck.com/captn3m0/http-an-insight-into-the-worlds-most-used-protocol "Internal talk at SDSLabs")
|
||||
7. [Fun with HTTP](http://slides.com/captn3m0/fun-with-http) - Talk at Barcamp
|
||||
Bangalore about how HTTP can be a really fun protocol
|
||||
8. [Security Horror Stories in Payments](https://speakerdeck.com/captn3m0/security-horror-stories-in-payments) -
|
||||
Talk at the 50p Conference (2017)
|
||||
[[Video]](https://www.youtube.com/watch?v=_M-cftlhYKI) Talk about several
|
||||
security gotchas I've witnessed working in payments. Given at 50p, a HasGeek
|
||||
conference on Digital Payments in India.
|
||||
9. [Billion Dollar Hacking](https://speakerdeck.com/captn3m0/billion-dollar-hacking) -
|
||||
A short talk at a Dev/Hacker meetup about the recent SWIFT bank hacks. I
|
||||
repeated this talk at hillhacks 2016.
|
||||
10. [Indian Financial Systems Code](http://slides.com/captn3m0/indian-financial-systems-code#/) -
|
||||
A short talk on IFSC Codes and how they work in India.
|
||||
11. [Terraforming Tatooine](https://www.beautiful.ai/deck/-L4w5j_sJ9XkKnzf1OXt) -
|
||||
A short talk at
|
||||
[Barcamp Bangalore Spring 2018](https://barcampbangalore.com/bcb/bcb-spring-2018/terraform-docker-nemo)
|
||||
on how I manage my home server using Terraform and Docker. PDF version is
|
||||
available at
|
||||
[speakerdeck](https://speakerdeck.com/captn3m0/terraforming-tatooine)
|
||||
12. [crypto.koans](/talks/crypto.koans/) - Koans to help you learn openssl/PKI.
|
||||
13. [HomeServer Talk](/talks/hs/) - A talk on running my own homeserver.
|
||||
Presented at [RootConf '19](https://rootconf.in)
|
||||
14. [Monopoly: Why its a terrible game](https://slides.com/captn3m0/monopoly) -
|
||||
A talk on the various mistakes Monopoly makes in its game design, and why
|
||||
they are important game breaking issues.
|
||||
15. [Web Payment APIs](/talks/webpayments/) - Presented a talk on W3C's Web
|
||||
Payment APIs at RFCs We Love.
|
||||
16. [Constraint Programming to solve Modern Art](https://docs.google.com/presentation/d/1d4C3kDONasnhOCVLpz8RDQpEH-7haG7pRJnc9E3njL4/edit?usp=sharing) -
|
||||
A short talk on my work on solving the
|
||||
[Modern Art](https://github.captnemo.in/modernart) boardgame.
|
||||
17. [IFSC](/ifsc/) [[pdf](ifsc.pdf)] - A talk at the Cashless Consumer study
|
||||
group talking about banking codes in India, and the IFSC project in general.
|
||||
18. [Video streaming on Linux](/talks/v4l.html).
|
||||
19. [HPACK - Header Compression in HTTP/2](/talks/hpack/).
|
||||
20. [Sanderson's Laws of Magic](https://docs.google.com/presentation/d/1SNEEh2_i93V64Fnzg8_05vOGjJMSuagX8IyrLt-5xXk/present)
|
||||
21. [multipart-emails](/talks/email-protocols/) - A short talk on how linking
|
||||
with mid/cid schemes works in multipart-emails. Related work:
|
||||
https://github.com/awdeorio/mailmerge/issues/86
|
||||
22. [Payment Systems in India](/talks/payments-systems-in-india/) - A short 10
|
||||
minute presentation on _some of the digital payment_ ecosystem in India.
|
||||
23. [pystitcher](/talks/pystitcher) - pystitcher stitches your PDF files
|
||||
together, generating nice customizable bookmarks for you using a declarative
|
||||
input in the form of a markdown file. https://github.com/captn3m0/pystitcher
|
||||
24. [Sanskari Proxy](sanskari-proxy.pdf) - Talk about the
|
||||
[Sanskari Proxy Project](https://github.com/captn3m0/sanskari-proxy) - A
|
||||
project to help researchers outside India access Indian Government websites.
|
||||
25. [endoflife.date recommendations](https://speakerdeck.com/captn3m0/endoflife-dot-date-recommendations) - Presentation on endoflife.date documentation recommendations I wrote down [here](https://endoflife.date/recommendations). Presented at the [FOSS United Meetup in Bangalore](https://forum.fossunited.org/t/june-2022-foss-meetup/1070/4), June 2022. [[Credits](/talks/credits/eol-talk.html)], [[PDF Version](/talks/eol-recommendations.pdf)], [[Slides with Speaker Notes](https://docs.google.com/presentation/d/10qpSY3CYK83omwoGsbPz1VzCgVCG2e6_XPiN24BqxtM)].
|
||||
|
||||
A few more talks that I've done are on my
|
||||
[SpeakerDeck account](https://speakerdeck.com/captn3m0) and my
|
||||
[slides.com](https://slides.com/captn3m0/) profile page.
|
||||
|
||||
Source for most of these is available on the
|
||||
[captn3m0/talks](https://github.com/captn3m0/talks) repository. If you have any
|
||||
questions regarding any of the talks, feel free to reach out at
|
||||
<talks@captnemo.in>.
|
||||
|
||||
Go back to [my website](https://captnemo.in)
|
||||
|
||||
A few more talks that I've done are on my [SpeakerDeck account](https://speakerdeck.com/captn3m0)
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
# Credits
|
||||
|
||||
- endoflife.date contributors and team listed at <https://endoflife.date/humans.txt>.
|
||||
- Presentation template by [Slidesgo](https://slidesgo.com/theme/aqua-marketing-plan).
|
||||
- Screenshots from various product pages including:
|
||||
- <https://www.php.net/supported-versions.php>
|
||||
- <https://kubernetes.io/releases/patch-releases/>
|
||||
- <https://www.elastic.co/support/eol>
|
||||
- <https://jefftriplett.com/django-release-cycle/> by Jeff Triplett
|
||||
- <https://ubuntu.com/about/release-cycle>
|
||||
- <https://nodejs.org/en/about/releases/>
|
||||
- <https://www.python.org/downloads/>
|
||||
- <https://docs.microsoft.com/en-us/azure/aks/supported-kubernetes-versions?tabs=azure-cli#aks-kubernetes-release-calendar>
|
||||
- <https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html#kubernetes-release-calendar>
|
||||
- <https://haproxy.org/>
|
|
@ -0,0 +1,13 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Cats!</title>
|
||||
</head>
|
||||
<body>
|
||||
<img src="https://i.imgur.com/u4qSjQL.jpeg">
|
||||
<br>
|
||||
<img src="u4qSjQL.jpeg">
|
||||
<br>
|
||||
<img src='data:image/jpeg;base64,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'/>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,10 @@
|
|||
From: foo1@bar.net
|
||||
To: foo2@bar.net
|
||||
Subject: A simple example
|
||||
Content-Type: text/html; charset=utf-8
|
||||
|
||||
Hi,
|
||||
|
||||
This is a cat pic:
|
||||
|
||||
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDABIMDhAOCxIQDxAUExIVGy0dGxkZGzcoKiEtQjpFREA6Pz5IUWhYSE1iTj4/WntcYmtvdHZ0RleAiX9xiGhydHD/2wBDARMUFBsYGzUdHTVwSz9LcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHD/wAARCACBAMgDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtRE...">
|
|
@ -0,0 +1,24 @@
|
|||
From: foo1@bar.net
|
||||
To: foo2@bar.net
|
||||
Subject: A simple example
|
||||
Mime-Version: 1.0
|
||||
Content-Type: multipart/related; boundary="never-graduate";
|
||||
type=Text/HTML
|
||||
--never-graduate
|
||||
Content-Type: Text/HTML; charset=US-ASCII
|
||||
|
||||
to the other body part, for example through a statement such as:
|
||||
<img src="cid:foo4*foo1@bar.net">
|
||||
|
||||
--never-graduate
|
||||
|
||||
Content-ID: <foo4*foo1@bar.net>
|
||||
Content-Type: IMAGE/GIF
|
||||
Content-Transfer-Encoding: BASE64
|
||||
|
||||
R0lGODlhGAGgAPEAAP/////ZRaCgoAAAACH+PUNvcHlyaWdodCAoQykgMTk5
|
||||
NSBJRVRGLiBVbmF1dGhvcml6ZWQgZHVwbGljYXRpb24gcHJvaGliaXRlZC4A
|
||||
etc...
|
||||
|
||||
--never-graduate--
|
||||
# remember to pitch for RFCs We Love
|
|
@ -0,0 +1,10 @@
|
|||
From: foo1@bar.net
|
||||
To: foo2@bar.net
|
||||
Subject: A simple example
|
||||
Content-Type: text/html; charset=utf-8
|
||||
|
||||
Hi,
|
||||
|
||||
This is a cat pic:
|
||||
|
||||
<img src="https://i.imgur.com/u4qSjQL.jpeg">
|
|
@ -0,0 +1,32 @@
|
|||
POST / HTTP/1.1
|
||||
[[ Less interesting headers ... ]]
|
||||
Content-Type: multipart/form-data; boundary=---------------------------boundary
|
||||
Content-Length: 834
|
||||
|
||||
-----------------------------boundary
|
||||
Content-Disposition: form-data; name="text1"
|
||||
|
||||
text default
|
||||
-----------------------------boundary
|
||||
Content-Disposition: form-data; name="text2"
|
||||
|
||||
aωb
|
||||
-----------------------------boundary
|
||||
Content-Disposition: form-data; name="file1"; filename="a.txt"
|
||||
Content-Type: text/plain
|
||||
Content-ID: <a@example.com>
|
||||
|
||||
Content of a.txt.
|
||||
|
||||
-----------------------------boundary
|
||||
Content-Disposition: form-data; name="file2"; filename="a.html"
|
||||
Content-Type: text/html
|
||||
|
||||
<!DOCTYPE html><title>Content of a.html.</title>
|
||||
|
||||
-----------------------------boundary
|
||||
Content-Disposition: form-data; name="file3"; filename="binary"
|
||||
Content-Type: application/octet-stream
|
||||
|
||||
aωb
|
||||
-----------------------------boundary--
|
|
@ -0,0 +1,6 @@
|
|||
<div>
|
||||
<form>
|
||||
<input type="file" name="">
|
||||
<input type="file" name="">
|
||||
</form>
|
||||
</div>
|
|
@ -0,0 +1,202 @@
|
|||
# multipart-encoding in emails
|
||||
\-nemo
|
||||
|
||||
---
|
||||
# history of email RFCs
|
||||
|
||||
Date|RFC|Title
|
||||
----|-----|-----
|
||||
Jun '73|524|A Proposed Mail Protocol
|
||||
Sep '73|561|Standardizing Network Mail Headers
|
||||
Apr '75|680|Message Transmission Protocol
|
||||
May '77|724|Proposed Official Standard for the Format of ARPA Network Messages
|
||||
Nov '77|733|STANDARD FOR THE FORMAT OF ARPA NETWORK TEXT MESSAGES(1)
|
||||
Aug '82|821|SIMPLE MAIL TRANSFER PROTOCOL
|
||||
Aug '82|822|STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES
|
||||
Jan '86|974|MAIL ROUTING AND THE DOMAIN SYSTEM
|
||||
Apr '86|983|ISO Transport Services on Top of the TCP
|
||||
May '87|1006|ISO Transport Service on top of the TCP
|
||||
Oct '89|1123|Requirements for Internet Hosts -- Application and Support
|
||||
Dec '89|1138|Mapping between X.400(1988) / ISO 10021 and RFC 822
|
||||
Mar '90|1148|Mapping between X.400(1988) / ISO 10021 and RFC 822
|
||||
May '92|1327|Mapping between X.400(1988) / ISO 10021 and RFC 822
|
||||
Aug '93|1495|Mapping between X.400 and RFC-822 Message Bodies
|
||||
Nov '95|1869|SMTP Service Extensions
|
||||
Mar '97|2111|Content-ID and Message-ID Uniform Resource Locators
|
||||
Jan '98|2156|MIXER (Mime Internet X.400 Enhanced Relay): Mapping between X.400 and RFC 822/MIME
|
||||
Aug '98|2387|The MIME Multipart/Related Content-type
|
||||
Aug '98|2392|Content-ID and Message-ID Uniform Resource Locators
|
||||
Apr '01|2821|Simple Mail Transfer Protocol
|
||||
Apr '01|2822|Internet Message Format
|
||||
Oct '08|5321|Simple Mail Transfer Protocol
|
||||
Oct '08|5322|Internet Message Format
|
||||
|
||||
---
|
||||
|
||||
|
||||
# email protocols
|
||||
|
||||
1. how to talk to an email server (SMTP)
|
||||
- TCP
|
||||
- DNS
|
||||
2. how to format a message?
|
||||
- Media types (MIME)
|
||||
- how to format dates?
|
||||
- html
|
||||
3. how to receive email?
|
||||
- IMAP
|
||||
- POP
|
||||
|
||||
---
|
||||
# mainline
|
||||
|
||||
Date|RFC|Title
|
||||
----|-----|-----
|
||||
Aug '82|821|SIMPLE MAIL TRANSFER PROTOCOL
|
||||
Aug '82|822|STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES
|
||||
Apr '01|2821|Simple Mail Transfer Protocol
|
||||
Apr '01|2822|Internet Message Format
|
||||
Oct '08|5321|Simple Mail Transfer Protocol
|
||||
Oct '08|5322|Internet Message Format
|
||||
|
||||
---
|
||||
|
||||
# how to send emails
|
||||
|
||||
Date|RFC|Title
|
||||
----|-----|-----
|
||||
Aug '82|821|SIMPLE MAIL TRANSFER PROTOCOL
|
||||
Apr '01|2821|Simple Mail Transfer Protocol
|
||||
Oct '08|5321|Simple Mail Transfer Protocol
|
||||
|
||||
---
|
||||
|
||||
# how to write emails
|
||||
|
||||
Date|RFC|Title
|
||||
----|-----|-----
|
||||
Aug '82|822|STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES
|
||||
Apr '01|2822|Internet Message Format
|
||||
Oct '08|5322|Internet Message Format
|
||||
|
||||
---
|
||||
|
||||
# the multipart-variation
|
||||
|
||||
Date|RFC|Title
|
||||
----|-----|-----
|
||||
Mar '97|2111|Content-ID and Message-ID Uniform Resource Locators
|
||||
Aug '98|2392|Content-ID and Message-ID Uniform Resource Locators
|
||||
|
||||
---
|
||||
|
||||
# what's multi-part?
|
||||
|
||||
```
|
||||
POST / HTTP/1.1
|
||||
[[ Less interesting headers ... ]]
|
||||
Content-Type: multipart/form-data; boundary=--boundary
|
||||
Content-Length: 834
|
||||
|
||||
--boundary
|
||||
Content-Disposition: form-data; name="text1"
|
||||
|
||||
text default
|
||||
--boundary
|
||||
Content-Disposition: form-data; name="text2"
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
```
|
||||
From: foo1@bar.net
|
||||
To: foo2@bar.net
|
||||
Subject: A simple example
|
||||
Mime-Version: 1.0
|
||||
Content-Type: multipart/alternate; boundary="never-graduate";
|
||||
--never-graduate
|
||||
Content-Type: Text/HTML; charset=US-ASCII
|
||||
Content-Id: <html.foo1@bar.net>
|
||||
|
||||
This is <strong>My HTML</strong> email.
|
||||
|
||||
--never-graduate
|
||||
|
||||
Content-Id: <plaintext.foo1@bar.net>
|
||||
Content-Type: text/plain
|
||||
|
||||
This is my plaintext email.
|
||||
|
||||
--never-graduate--
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# multi-part-linking
|
||||
|
||||
Date|RFC|Title
|
||||
----|-----|-----
|
||||
Mar '97|2111|Content-ID and Message-ID Uniform Resource Locators
|
||||
Aug '98|2392|Content-ID and Message-ID Uniform Resource Locators
|
||||
|
||||
---
|
||||
|
||||
# multi-part-linking
|
||||
|
||||
Scheme|Name
|
||||
---|---
|
||||
`cid:`|Content ID URL Scheme
|
||||
`mid:`|Message ID URL Scheme
|
||||
|
||||
---
|
||||
|
||||
# definitions
|
||||
|
||||
```
|
||||
content-id = url-addr-spec
|
||||
message-id = url-addr-spec
|
||||
|
||||
url-addr-spec = addr-spec ; URL encoding of RFC 822 addr-spec
|
||||
|
||||
cid-url = "cid" ":" content-id
|
||||
mid-url = "mid" ":" message-id [ "/" content-id ]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# plain english
|
||||
|
||||
* Content and Message IDs are emails
|
||||
* CID/MID URLs are `cid:$CID`, `mid:$MID`, and `mid:$MID/$CID`
|
||||
|
||||
---
|
||||
|
||||
# so how does it work?
|
||||
|
||||
```
|
||||
From: foo1@bar.net
|
||||
To: foo2@bar.net
|
||||
Subject: A simple example
|
||||
Mime-Version: 1.0
|
||||
Content-Type: multipart/related; boundary="never-graduate";type=Text/HTML
|
||||
|
||||
--never-graduate
|
||||
Content-Type: Text/HTML; charset=US-ASCII
|
||||
|
||||
to the other body part, for example through a statement such as:
|
||||
<img src="cid:foo4*foo1@bar.net">
|
||||
|
||||
--never-graduate
|
||||
|
||||
Content-ID: <foo4*foo1@bar.net>
|
||||
Content-Type: IMAGE/GIF
|
||||
Content-Transfer-Encoding: BASE64
|
||||
|
||||
R0lGODlhGAGgAPEAAP/////ZRaCgoAAAACH+PUNvcHlyaWdodCAoQykgMTk5
|
||||
NSBJRVRGLiBVbmF1dGhvcml6ZWQgZHVwbGljYXRpb24gcHJvaGliaXRlZC4A
|
||||
etc...
|
||||
|
||||
--never-graduate--
|
||||
# remember to pitch for RFCs We Love
|
||||
```
|
|
@ -0,0 +1,21 @@
|
|||
<?php
|
||||
// header("Mime-Version: 1.0");
|
||||
header('Content-Type: multipart/x-mixed-replace; boundary="--never-graduate--"');
|
||||
header('Date: Tue, 01 Dec 2009 23:27:30 GMT');
|
||||
header('Vary: Accept-Encoding,User-Agent');
|
||||
?>
|
||||
multipart-not-supported
|
||||
--never-graduate--
|
||||
Content-Type: text/html; charset=utf-8
|
||||
Content-Base: http://localhost:1111/
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<link rel="stylesheet" href="http://localhost:2080/file.css">
|
||||
</head>
|
||||
<body>
|
||||
Hello from a html
|
||||
<script type="text/javascript" src="http://localhost:2080/file.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
--never-graduate--
|
After Width: | Height: | Size: 3.4 KiB |
|
@ -0,0 +1,466 @@
|
|||
---
|
||||
inlineSVG: true
|
||||
paginate: true
|
||||
---
|
||||
|
||||
# <!--fit--><!-- _class: lead white -->the homeserver talk
|
||||
|
||||
![bg](https://fakeimg.pl/1920x800/8e44ad/fff/?text=+&npsp;)
|
||||
|
||||
---
|
||||
|
||||
# `whoami`
|
||||
|
||||
- Nemo
|
||||
- [@captn3m0](https://twitter.com/captn3m0)
|
||||
- [@razorpay](https://razorpay.com) (:money_with_wings: :credit_card:)
|
||||
- me@captnemo.in
|
||||
|
||||
---
|
||||
|
||||
# agenda
|
||||
|
||||
0. What counts as a homeserver?
|
||||
1. Why you should run one?
|
||||
1. How do you get started?
|
||||
1. All the gotchas!
|
||||
1. CTA
|
||||
|
||||
---
|
||||
|
||||
# homeserver
|
||||
|
||||
A _computer_ which runs service(s) for personal use.
|
||||
|
||||
---
|
||||
|
||||
![bg](https://fakeimg.pl/1920x800/8e44ad/fff/?text=why?)
|
||||
|
||||
---
|
||||
|
||||
# motivation?
|
||||
|
||||
1. owning your data
|
||||
|
||||
---
|
||||
|
||||
# motivation?
|
||||
|
||||
1. owning your data
|
||||
2. de-googling
|
||||
|
||||
---
|
||||
|
||||
# motivation?
|
||||
|
||||
1. owning your data
|
||||
2. de-googling
|
||||
3. backing up your data locally
|
||||
|
||||
---
|
||||
|
||||
# motivation?
|
||||
|
||||
1. owning your data
|
||||
2. de-googling
|
||||
3. backing up your data locally
|
||||
4. learning/experimenting with tech
|
||||
|
||||
---
|
||||
|
||||
# motivation?
|
||||
|
||||
1. owning your data
|
||||
2. de-googling
|
||||
3. backing up your data locally
|
||||
4. learning/experimenting with tech
|
||||
5. playing mario
|
||||
|
||||
---
|
||||
|
||||
# <!-- _class: lead --> ![drop-shadow](./images/sideproject.jpg)
|
||||
|
||||
---
|
||||
|
||||
# time?
|
||||
|
||||
_<5 hr a month_
|
||||
|
||||
---
|
||||
|
||||
![bg](images/elite130.jpg)
|
||||
|
||||
---
|
||||
|
||||
![bg](images/htpc.jpg)
|
||||
|
||||
---
|
||||
|
||||
![bg](https://fakeimg.pl/1920x800/8e44ad/fff/?text=software)
|
||||
![bg vertical](https://fakeimg.pl/1920x800/AE53D4/fff/?text=hardware)
|
||||
![bg](https://fakeimg.pl/1920x800/B858E0/fff/?text=glue)
|
||||
|
||||
---
|
||||
|
||||
# what I run?
|
||||
|
||||
## Monitoring
|
||||
|
||||
- Prometheus
|
||||
- Grafana
|
||||
- speedtest-exporter
|
||||
- [ACT Exporter](https://git.captnemo.in/nemo/prometheus-act-exporter)
|
||||
- CAdvisor
|
||||
|
||||
---
|
||||
|
||||
![bg fit](images/act2.jpg)
|
||||
|
||||
---
|
||||
|
||||
![bg fit](images/act-graph.png)
|
||||
|
||||
<!-- _class: bottom --> [#](https://grafana.bb8.fun/d/_u2-GHSik/main-dashboard?orgId=1&fullscreen&panelId=3&from=now%2Fw&to=now)
|
||||
|
||||
---
|
||||
|
||||
## Media
|
||||
|
||||
- Airsonic (:musical_note:) (Google Play)
|
||||
- Jellyfin (:movie_camera:) (Netflix)
|
||||
- Kodi (:tv:) (Home Theater)
|
||||
- Audioserve (:studio_microphone: :book:) (Audible)
|
||||
|
||||
---
|
||||
|
||||
## Content
|
||||
|
||||
- [Nextcloud][nc] :cloud: :white_check_mark: (Drive/Calendar/Contacts/Documents)
|
||||
- [Miniflux][miniflux] (:newspaper_roll: `RSS`) (Feeds)
|
||||
- [Timemachine][timemachine] (💻 ⏮)
|
||||
- [wiki.js][wiki]
|
||||
- [Radicale][radicale] :date: :card_index_dividers: (Contacts/Calendar)
|
||||
- [RSS Bridge][rssb]
|
||||
- [Gitea][gitea] (GitHub)
|
||||
- [ZNC](https://wiki.znc.in/ZNC) (IRC)
|
||||
|
||||
---
|
||||
|
||||
# <!--fit--><!-- _class: lead white -->hardware
|
||||
|
||||
![bg](https://fakeimg.pl/1920x800/AE53D4/fff/?text=+&npsp;)
|
||||
|
||||
---
|
||||
|
||||
## [Specs](https://in.pcpartpicker.com/list/fZfp6s)
|
||||
|
||||
- Intel i5-7600 3.5GHz
|
||||
- Nvidia 1050 Ti 4GB
|
||||
- 2x8GB DDR4 RAM
|
||||
- 3x3TB Internal HDD
|
||||
- MSI B250I Motherboard
|
||||
|
||||
## :cloud:
|
||||
|
||||
- DO 1vCPU / 2GB RAM / 30GB SSD ($10/mo) (BLR1 region)
|
||||
- \+ 100GB disk
|
||||
|
||||
---
|
||||
|
||||
# A VM on the :cloud:
|
||||
|
||||
- Scaleway: 4ARMv8/2GB/50GB - **300 INR**
|
||||
- AWS Lightsail: 1vCPU/512MB/20GB - **250 INR**
|
||||
- Digital Ocean: 1vCPU/1GB/25GB - **350 INR**
|
||||
|
||||
_Beware of Persistent Storage cost_
|
||||
|
||||
---
|
||||
|
||||
# :cloud:
|
||||
|
||||
- Security: Footgun
|
||||
- Batteries included
|
||||
- OpEx
|
||||
|
||||
---
|
||||
|
||||
# cloud storage
|
||||
|
||||
| Storage | Cost/month | Retail |
|
||||
| :------ | ---------- | ------ |
|
||||
| 1TB-SSD | $100 | $99 |
|
||||
| 3TB-SSD | $300 | $224 |
|
||||
| 1TB | $25 | $45 |
|
||||
| 3TB | $75 | $84 |
|
||||
|
||||
_Indicative AWS:EBS Prices_
|
||||
|
||||
---
|
||||
|
||||
# Raspberry Pi 3
|
||||
|
||||
- :memo: 1GB RAM
|
||||
- :globe_with_meridians: Wireless/BLE/Ethernet
|
||||
- :chains: 4 USB ports
|
||||
- :musical_note: Audio/HDMI/Composite VGA
|
||||
- :zap: 2.5A
|
||||
- :money_with_wings: **~3k INR**
|
||||
- :camera:, GPIO
|
||||
|
||||
![bg right](https://cdn.shopify.com/s/files/1/0176/3274/products/Kit-game_1024x1024.jpg)
|
||||
|
||||
---
|
||||
|
||||
# <!-- _class: white -->system76 Meerkat
|
||||
|
||||
![bg](https://d1vhcvzji58n1j.cloudfront.net/assets/products/meer4/hero_wide-7cf0ee6536_2560.jpg)
|
||||
|
||||
<!-- TODO: Fix header -->
|
||||
|
||||
---
|
||||
|
||||
# Other Alternatives
|
||||
|
||||
![bg right](images/nuc.jpg)
|
||||
|
||||
1. Intel NUCs
|
||||
2. [Hetzner Server Auctions](https://www.hetzner.com/sb) (20-50USD/mo).
|
||||
3. NAS/Network device.
|
||||
4. Gamer? [`r/pcmasterrace/wiki`](https://www.reddit.com/r/pcmasterrace/wiki/builds)
|
||||
|
||||
<!-- _TODO: better image_ -->
|
||||
|
||||
---
|
||||
|
||||
# <!-- _class: white bottom-->have some old laptops?
|
||||
|
||||
<!-- https://preview.redd.it/b9fvg5yo5dl21.jpg?width=1024&auto=webp&s=9a5a4d9fdd4e486a23c159f4e4e27e88942018f5 -->
|
||||
|
||||
![bg cover](images/homelab1.jpg)
|
||||
|
||||
---
|
||||
|
||||
# <!-- _class: white bottom-->really into networking?
|
||||
|
||||
<!-- https://preview.redd.it/8682wq9m8kn21.jpg?width=576&auto=webp&s=41e7ab264fcbb054209981126259b9b44b9d1d70 -->
|
||||
|
||||
![bg cover](images/homelab2.jpg)
|
||||
|
||||
---
|
||||
|
||||
# <!-- _class: white bottom -->really want a cluster?
|
||||
|
||||
<!-- http://raspberrywebserver.com/raspberrypicluster/raspberry-pi-cluster.html -->
|
||||
|
||||
![bg cover](images/cluster.jpg)
|
||||
|
||||
---
|
||||
|
||||
# Hybrid
|
||||
|
||||
- Local Disk, Cloud Compute
|
||||
|
||||
![](images/hybrid.jpg)
|
||||
|
||||
---
|
||||
|
||||
| | Cloud | Pi | PC\* | Hybrid | NAS |
|
||||
| :------------------ | ------------------ | --- | -------- | ------ | --- |
|
||||
| **Security** :lock: | + | ++ | ++ | + | ++ |
|
||||
| **Utility** | +++ | - | :dollar: | ++ | - |
|
||||
| **Cost** | :money_with_wings: | +++ | ++ | + | ++ |
|
||||
| **Setup-Ease** | + | + | - | -- | ++ |
|
||||
| **Ops-Ease** | ++ | - | + | - | ++ |
|
||||
| **Storage** | -- | - | + | ++ | ++ |
|
||||
| **Gaming** | -- | - | ++ | ++ | -- |
|
||||
| **HTPC** | :dollar: | + | ++ | ++ | + |
|
||||
|
||||
<!-- - \*Includes DIY/PC/Alienware/Old Laptops/Gaming PC -->
|
||||
|
||||
---
|
||||
|
||||
# <!--fit--><!-- _class: lead white -->glue
|
||||
|
||||
![bg](https://fakeimg.pl/1920x800/B858E0/fff/?text=+&npsp;)
|
||||
|
||||
---
|
||||
|
||||
# software
|
||||
|
||||
1. docker **\***
|
||||
2. kubernetes
|
||||
3. ansible/puppet/chef
|
||||
4. helm?
|
||||
5. [tool-of-your-choice](https://docs.google.com/spreadsheets/d/1FCgqz1Ci7_VCz_wdh8vBitZ3giBtac_H8SBw4uxnrsE/edit#gid=0)
|
||||
6. [Unraid](https://www.unraid.net/)
|
||||
7. [HomelabOS](https://gitlab.com/NickBusey/HomelabOS)
|
||||
|
||||
---
|
||||
|
||||
# <!--fit--><!-- _class: lead white -->pick something dumb
|
||||
|
||||
![bg](https://fakeimg.pl/1920x800/9b59b6/fff/?text=+&npsp;)
|
||||
|
||||
---
|
||||
|
||||
# containers?
|
||||
|
||||
- secure
|
||||
- declarative configuration
|
||||
- orchestration is 100x easier
|
||||
|
||||
---
|
||||
|
||||
# networking
|
||||
|
||||
- Public + Static IP Address
|
||||
- Floating/Elastic IP
|
||||
- VPN
|
||||
- Wildcard DNS/TLS
|
||||
|
||||
---
|
||||
|
||||
![bg cover](images/network-mini.jpg)
|
||||
|
||||
---
|
||||
|
||||
![bg cover](images/networking.jpg)
|
||||
|
||||
---
|
||||
|
||||
<!--
|
||||
|
||||
REM What follows are some slides on
|
||||
REM on how I configure my network and infrastructure
|
||||
REM with docker/terraform, but they aren't
|
||||
REM useful for the audience, so skipped
|
||||
|
||||
# configuration
|
||||
|
||||
- terraform + docker
|
||||
- kubernetes + helm
|
||||
- ansible + galaxy
|
||||
- docker-compose
|
||||
|
||||
---
|
||||
|
||||
# terraform
|
||||
|
||||
```json
|
||||
module "requestbin" {
|
||||
name = "requestbin"
|
||||
source = "./modules/container"
|
||||
image = "jankysolutions/requestbin:latest"
|
||||
web {
|
||||
expose = true
|
||||
port = "8000"
|
||||
host = "requestbin.bb8.fun"
|
||||
}
|
||||
networks = "${list(module.docker.traefik-network-id)}"
|
||||
}
|
||||
```
|
||||
|
||||
- source: <https://git.captnemo.in/nemo/nebula>
|
||||
- [terraform.io/docker](https://www.terraform.io/docs/providers/docker/)
|
||||
|
||||
---
|
||||
|
||||
# Docker API
|
||||
|
||||
1. Manage networks,
|
||||
2. Containers,
|
||||
3. Configuration
|
||||
|
||||
All over a API, but only for one host.
|
||||
|
||||
docker swarm, but single host
|
||||
|
||||
--- -->
|
||||
|
||||
# <!--fit--><!-- _class: lead white -->security
|
||||
|
||||
![bg](https://fakeimg.pl/1920x800/27ae60/fff/?text=+&npsp;)
|
||||
|
||||
---
|
||||
|
||||
# security
|
||||
|
||||
0. Run everything in isolation
|
||||
1. Don't expose services
|
||||
1. Expose services without auth over VPN only
|
||||
1. Don't expose management services over Internet
|
||||
1. Keep services behind Auth (even Basic Auth works)
|
||||
1. Go Hybrid
|
||||
|
||||
---
|
||||
|
||||
# <!--fit--><!-- _class: lead white -->buy a raspberry pi today
|
||||
|
||||
![bg](https://fakeimg.pl/1920x800/27ae60/fff/?text=+&npsp;)
|
||||
|
||||
---
|
||||
|
||||
# self-hosting references
|
||||
|
||||
- [kickball/awesome-selfhosted](https://github.com/Kickball/awesome-selfhosted)
|
||||
- [linuxserver.io](https://www.linuxserver.io/)
|
||||
- [r/selfhosted](https://reddit.com/r/selfhosted)
|
||||
|
||||
<!-- paginate: true -->
|
||||
|
||||
<style>
|
||||
section.lead h1 {
|
||||
text-align: center;
|
||||
}
|
||||
section.white h1 {
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
h1,h2,h3,h4,h5 {
|
||||
font-weight: bold;
|
||||
font-family: 'Yanone Kaffeesatz', sans-serif !important;
|
||||
color: #2c3e50;
|
||||
}
|
||||
h1 {
|
||||
font-size: 3em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2em;
|
||||
}h3 {
|
||||
font-size: 1.3em;
|
||||
}
|
||||
|
||||
section.bottom>*, section.bottom {
|
||||
text-align: center;
|
||||
padding-top: 300px;
|
||||
text-shadow: -1px -1px 0 #34495e, 1px -1px 0 #34495e, -1px 1px 0 #34495e, 1px 1px 0 #34495e;
|
||||
}
|
||||
</style>
|
||||
|
||||
---
|
||||
|
||||
# questions?
|
||||
|
||||
- [me@captnemo.in](mailto:me@captnemo.in)
|
||||
- [@captn3m0](https://twitter.com/captn3m0)
|
||||
- [captnemo.in/archive.html](https://captnemo.in/archive.html)
|
||||
- [captnemo.in/talks/](https://captnemo.in/talks/hs/)
|
||||
|
||||
<!---
|
||||
0. SPEAK SLOWLY
|
||||
1. check colors and fix colors.
|
||||
2. skip clustering
|
||||
3. Fix colors
|
||||
4. Cloud Icon Fix
|
||||
5. Software section mention backups again
|
||||
-->
|
||||
|
||||
[nc]: https://nextcloud.com/
|
||||
[miniflux]: https://github.com/miniflux/miniflux/
|
||||
[timemachine]: https://github.com/odarriba/docker-timemachine/
|
||||
[wiki]: https://docs.requarks.io/wiki/install/docker
|
||||
[radicale]: https://radicale.org/
|
||||
[rssb]: https://github.com/RSS-Bridge/rss-bridge
|
||||
[gitea]: https://gitea.io/
|
|
@ -0,0 +1,208 @@
|
|||
# HPACK (RFC 7541)
|
||||
\- Header Compression for HTTP/2
|
||||
|
||||
---
|
||||
|
||||
# http/1.1
|
||||
|
||||
## Request
|
||||
|
||||
```
|
||||
GET /path HTTP/1.1
|
||||
Host: www.example.com
|
||||
Accept-Encoding: gzip, deflate,br
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# http/1.1
|
||||
|
||||
## Response
|
||||
|
||||
```
|
||||
HTTP/1.1 200 OK
|
||||
Accept-Ranges: bytes
|
||||
Content-Length: 438
|
||||
Content-Type: text/html; charset=UTF-8
|
||||
Content-Encoding: gzip
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# PROS
|
||||
|
||||
- Easy to support, works both ways
|
||||
|
||||
---
|
||||
|
||||
# CONS
|
||||
- Different algorithms have different implementations
|
||||
- Does not support header compression
|
||||
- Multiple security issues, via chosen-plaintext attacks.
|
||||
|
||||
---
|
||||
|
||||
Unrelated: There's also TLS compression (don't use it)
|
||||
|
||||
---
|
||||
|
||||
# hpack
|
||||
|
||||
---
|
||||
|
||||
# core ideas
|
||||
|
||||
1. most web requests will have fairly similar headers.
|
||||
2. should be fast.
|
||||
3. reduce complexity or implementation issues.
|
||||
4. ignore encoding, focus on a correct decoding.
|
||||
5. "streaming"
|
||||
|
||||
---
|
||||
|
||||
# important-to-note
|
||||
|
||||
1. Headers can be repeated
|
||||
2. Headers are an Ordered List
|
||||
|
||||
---
|
||||
|
||||
# Static Table
|
||||
|
||||
Generated by frequency of header fields on popular websites.
|
||||
|
||||
```
|
||||
+-------+-----------------------------+---------------+
|
||||
| Index | Header Name | Header Value |
|
||||
+-------+-----------------------------+---------------+
|
||||
| 1 | :authority | |
|
||||
| 2 | :method | GET |
|
||||
| 3 | :method | POST |
|
||||
| 4 | :path | / |
|
||||
| 5 | :path | /index.html |
|
||||
| 6 | :scheme | http |
|
||||
| 7 | :scheme | https |
|
||||
| 8 | :status | 200 |
|
||||
| 9 | :status | 204 |
|
||||
| 10 | :status | 206 |
|
||||
| 11 | :status | 304 |
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Index Address Space
|
||||
|
||||
```
|
||||
<---------- Index Address Space ---------->
|
||||
<-- Static Table --> <-- Dynamic Table -->
|
||||
+---+-----------+---+ +---+-----------+---+
|
||||
| 1 | ... | s | |s+1| ... |s+k|
|
||||
+---+-----------+---+ +---+-----------+---+
|
||||
^ |
|
||||
| V
|
||||
Insertion Point Dropping Point
|
||||
```
|
||||
|
||||
# Representation
|
||||
|
||||
A header field(=`name+value`) can be represented as:
|
||||
|
||||
## an index
|
||||
is a reference to either:
|
||||
|
||||
- the static table
|
||||
- the dynamic table
|
||||
|
||||
---
|
||||
|
||||
## or a literal (1)
|
||||
|
||||
the header field name can be represented
|
||||
|
||||
- literally
|
||||
- a reference to either tables
|
||||
|
||||
---
|
||||
|
||||
# or a literal (2)
|
||||
|
||||
the header value is represented literally and
|
||||
|
||||
1. **ADD** it to the dynamic table
|
||||
2. **DON'T ADD** it to the dynamic table
|
||||
3. **NEVER ADD** it to the dynamic table
|
||||
|
||||
---
|
||||
|
||||
# a literal
|
||||
|
||||
can be presented in two forms:
|
||||
|
||||
1. directly
|
||||
2. using a Huffman code
|
||||
|
||||
---
|
||||
|
||||
# decisions while parsing
|
||||
|
||||
- do a table lookup
|
||||
- static table
|
||||
- dynamic table
|
||||
- read it literally
|
||||
- directly
|
||||
- using the huffman code
|
||||
|
||||
Almost is encoded as a integer or as a string
|
||||
|
||||
---
|
||||
|
||||
# literal representation
|
||||
|
||||
|
||||
```
|
||||
0 1 2 3 4 5 6 7
|
||||
+---+---+---+---+---+---+---+---+
|
||||
| H | String Length (7+) |
|
||||
+---+---------------------------+
|
||||
| String Data (Length octets) |
|
||||
+-------------------------------+
|
||||
```
|
||||
H=1 -> Huffman Encoded
|
||||
H=0 -> Encoded as a "string"
|
||||
|
||||
# index representation
|
||||
|
||||
This is simple table lookup
|
||||
|
||||
```
|
||||
0 1 2 3 4 5 6 7
|
||||
+---+---+---+---+---+---+---+---+
|
||||
| 1 | Index (7+) |
|
||||
+---+---------------------------+
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Static Huffman Code
|
||||
|
||||
```
|
||||
code
|
||||
code as bits as hex len
|
||||
sym aligned to MSB aligned in
|
||||
to LSB bits
|
||||
( 0) |11111111|11000 1ff8 [13]
|
||||
( 1) |11111111|11111111|1011000 7fffd8 [23]
|
||||
( 2) |11111111|11111111|11111110|0010 fffffe2 [28]
|
||||
( 3) |11111111|11111111|11111110|0011 fffffe3 [28]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# dynamic table updates
|
||||
|
||||
- You can add entries to the table
|
||||
- You can set the table size dynamically
|
||||
|
||||
>This mechanism can be used to completely clear entries from the
|
||||
dynamic table by setting a maximum size of 0, which can subsequently
|
||||
be restored.
|
|
@ -0,0 +1,8 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta http-equiv="refresh" content="0; url=https://captnemo.in/talks/homeserver.html" />
|
||||
</head>
|
||||
<body>
|
||||
Visit <a href="https://captnemo.in/talks/homeserver.html">this link</a> for the actual slides. You should get redirected automatically.
|
||||
</body>
|
||||
</html>
|
After Width: | Height: | Size: 260 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 406 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 223 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 74 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 230 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 71 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 34 KiB |
After Width: | Height: | Size: 144 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 43 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 84 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 110 KiB |
|
@ -0,0 +1,240 @@
|
|||
<h3 id="md">0.2.0.md</h3>
|
||||
<div class="figure">
|
||||
<img src="http://static.boredpanda.com/blog/wp-content/uploads/2015/09/XX-Cutest-Bunnies__605.jpg" />
|
||||
|
||||
</div>
|
||||
<h3 id="md-1">1.0.11.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/33009946-884c471a-cdfe-11e7-9e54-30aec48d58a1.jpg" alt="stocksnap_5ea8u6i0ad" />
|
||||
<p class="caption">stocksnap_5ea8u6i0ad</p>
|
||||
</div>
|
||||
<h3 id="md-2">1.4.3.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/58106019-0dd11e00-7c05-11e9-9764-4e5c10ac8215.jpg" alt="snail-3705324_640" />
|
||||
<p class="caption">snail-3705324_640</p>
|
||||
</div>
|
||||
<h3 id="md-3">1.0.14.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/35221477-41c5371a-ffa0-11e7-8e14-bb97d8d8d0a5.jpg" alt="loggerhead-turtle-123402_640" />
|
||||
<p class="caption">loggerhead-turtle-123402_640</p>
|
||||
</div>
|
||||
<h3 id="md-4">1.0.8.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/30211320-250a4676-94be-11e7-92b5-90cd61633a7d.jpg" alt="animal-1867122_640" />
|
||||
<p class="caption">animal-1867122_640</p>
|
||||
</div>
|
||||
<h3 id="md-5">1.0.4.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/28006071-561581ae-656b-11e7-934e-8632fc8be51d.png" alt="image" />
|
||||
<p class="caption">image</p>
|
||||
</div>
|
||||
<h3 id="md-6">1.3.1.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/49572719-61ef8b00-f962-11e8-92f6-46aa61957c0a.jpg" alt="iceland-2420768_640" />
|
||||
<p class="caption">iceland-2420768_640</p>
|
||||
</div>
|
||||
<h3 id="md-7">1.1.7.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/42445697-86b81af2-8391-11e8-9347-7fcdbcd3f979.jpg" alt="nutria-3442702_640" />
|
||||
<p class="caption">nutria-3442702_640</p>
|
||||
</div>
|
||||
<h3 id="md-8">1.2.1.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/45617890-6908aa80-ba91-11e8-8521-2db22e3cf258.jpg" alt="animal-1839389_640" />
|
||||
<p class="caption">animal-1839389_640</p>
|
||||
</div>
|
||||
<h3 id="md-9">1.4.10.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/71661101-2b598f00-2d73-11ea-9695-ea5f712eeb49.jpg" alt="adam-berkecz-K6kZKJOmZrk-unsplash" />
|
||||
<p class="caption">adam-berkecz-K6kZKJOmZrk-unsplash</p>
|
||||
</div>
|
||||
<h3 id="md-10">1.0.3.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/27283442-f02e9380-5511-11e7-8431-8133e634d61c.jpg" alt="jh0406_barnimages com_0600" />
|
||||
<p class="caption">jh0406_barnimages com_0600</p>
|
||||
</div>
|
||||
<h3 id="md-11">0.2.8.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://i.imgur.com/CiKhpgHm.jpg" />
|
||||
|
||||
</div>
|
||||
<h3 id="md-12">1.3.0.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/48693600-eec6e480-ebff-11e8-9402-b719d40b9ee4.jpg" alt="baby-cougar-1065101_640" />
|
||||
<p class="caption">baby-cougar-1065101_640</p>
|
||||
</div>
|
||||
<h3 id="md-13">1.1.3.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/39799332-891ae63e-5381-11e8-96ee-1c58c43486a1.jpg" alt="meerkat-3372211_640" />
|
||||
<p class="caption">meerkat-3372211_640</p>
|
||||
</div>
|
||||
<h3 id="md-14">1.4.5.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/61361068-5d4a6800-a89d-11e9-8a05-9bfd29eb963b.jpg" alt="crow-828944_640" />
|
||||
<p class="caption">crow-828944_640</p>
|
||||
</div>
|
||||
<h3 id="md-15">1.1.2.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/38722652-3344db4e-3f1c-11e8-9fed-99f60c38fe9d.jpg" alt="darin-ashby-483695-unsplash" />
|
||||
<p class="caption">darin-ashby-483695-unsplash</p>
|
||||
</div>
|
||||
<h3 id="md-16">1.0.2.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://cloud.githubusercontent.com/assets/584253/26580662/b4f8afb4-4556-11e7-9127-c52d541a8e96.jpg" alt="kittens-555822_640" />
|
||||
<p class="caption">kittens-555822_640</p>
|
||||
</div>
|
||||
<h3 id="md-17">1.0.15.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/9717497/35992272-d4d95a4e-0d2f-11e8-82a5-ac73aefd004c.jpg" alt="cute_bird Indian golden oriole" />
|
||||
<p class="caption">cute_bird Indian golden oriole</p>
|
||||
</div>
|
||||
<h3 id="md-18">1.0.13.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/34708030-c49fdc4a-f536-11e7-8ec3-3e15fb1b2e2a.jpg" alt="34680683-c1638fa8-f4bf-11e7-8a39-af52ea87db97" />
|
||||
<p class="caption">34680683-c1638fa8-f4bf-11e7-8a39-af52ea87db97</p>
|
||||
</div>
|
||||
<h3 id="md-19">1.1.5.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/41531619-8961e3b8-7311-11e8-91fc-c75ee1e3589c.jpg" alt="parrot-2818910_640" />
|
||||
<p class="caption">parrot-2818910_640</p>
|
||||
</div>
|
||||
<h3 id="md-20">0.2.6.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://i.imgur.com/PWs68Kpm.jpg" />
|
||||
|
||||
</div>
|
||||
<h3 id="md-21">1.1.0.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/37600205-afce8abc-2bac-11e8-8f6c-5274a0acd3d3.jpg" alt="iguana-1057830_640" />
|
||||
<p class="caption">iguana-1057830_640</p>
|
||||
</div>
|
||||
<h3 id="md-22">1.3.2.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/50766239-70e99600-129e-11e9-960b-123002ef8f28.jpg" alt="falcon-2851648_640" />
|
||||
<p class="caption">falcon-2851648_640</p>
|
||||
</div>
|
||||
<h3 id="md-23">1.0.12.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/9717497/34322148-a35effd2-e845-11e7-981b-740f6d622f65.jpg" alt="kittenasreindeer" />
|
||||
<p class="caption">kittenasreindeer</p>
|
||||
</div>
|
||||
<h3 id="md-24">1.0.6.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/29812083-23b8e92e-8cc3-11e7-80ec-58c397ace2f6.jpg" alt="animal-1853024_640" />
|
||||
<p class="caption">animal-1853024_640</p>
|
||||
</div>
|
||||
<h3 id="md-25">1.2.0.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/9717497/44724674-05720980-aaf1-11e8-8e74-26db880848cc.jpg" alt="pony" />
|
||||
<p class="caption">pony</p>
|
||||
</div>
|
||||
<h3 id="md-26">1.1.4.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/9717497/40906807-9457c610-67ff-11e8-8f35-62e97886fbfb.jpg" alt="polarbear" />
|
||||
<p class="caption">polarbear</p>
|
||||
</div>
|
||||
<h3 id="md-27">1.0.5.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/28417997-bfb69986-6d77-11e7-8f6f-28bf354ecef7.jpg" alt="andrew-branch-123375-small" />
|
||||
<p class="caption">andrew-branch-123375-small</p>
|
||||
</div>
|
||||
<h3 id="md-28">1.4.9.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/68370662-0544b380-0163-11ea-884e-ee8e8882f8ad.jpg" alt="29906278353_737f4ef0a8_c" />
|
||||
<p class="caption">29906278353_737f4ef0a8_c</p>
|
||||
</div>
|
||||
<h3 id="md-29">0.2.7.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://i.imgur.com/ixXHkFn.jpg" />
|
||||
|
||||
</div>
|
||||
<h3 id="md-30">1.2.2.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/9717497/46408467-e12ccc80-c72f-11e8-870b-f00fb61ea879.jpg" alt="dolphin" />
|
||||
<p class="caption">dolphin</p>
|
||||
</div>
|
||||
<h3 id="md-31">1.3.4.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/54548621-4fa7d300-49ce-11e9-8b39-0d3d95168954.jpg" alt="tim-marshall-131065-unsplash" />
|
||||
<p class="caption">tim-marshall-131065-unsplash</p>
|
||||
</div>
|
||||
<h3 id="md-32">1.1.1.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/9717497/38190735-3505bb52-3683-11e8-88e1-aa41b71df9ef.jpg" alt="cutecow" />
|
||||
<p class="caption">cutecow</p>
|
||||
</div>
|
||||
<h3 id="md-33">1.4.4.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/60387658-fa4a8a00-9ac3-11e9-897e-d9718cb1a006.jpg" alt="polar-bear-196317_640" />
|
||||
<p class="caption">polar-bear-196317_640</p>
|
||||
</div>
|
||||
<h3 id="md-34">1.0.7.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/29974998-66803afa-8f52-11e7-8dc3-f8093aac7075.jpg" alt="hamster-690108_640" />
|
||||
<p class="caption">hamster-690108_640</p>
|
||||
</div>
|
||||
<h3 id="md-35">0.2.10.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://cloud.githubusercontent.com/assets/584253/23647044/c6244582-0339-11e7-8a09-d5e80b0587e7.jpg" alt="siamese-468814_640" />
|
||||
<p class="caption">siamese-468814_640</p>
|
||||
</div>
|
||||
<h3 id="md-36">1.0.1.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://cloud.githubusercontent.com/assets/584253/26578260/bbbe67b2-454c-11e7-8c67-95cde3a5ef91.jpg" alt="skitterphoto-597-default" />
|
||||
<p class="caption">skitterphoto-597-default</p>
|
||||
</div>
|
||||
<h3 id="md-37">1.4.2.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/57851715-e6daac80-77fe-11e9-9933-2ea8862bcd45.jpg" alt="pug-801826_640" />
|
||||
<p class="caption">pug-801826_640</p>
|
||||
</div>
|
||||
<h3 id="md-38">1.0.10.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/31381764-18212550-add3-11e7-862d-d76cf1d9e850.jpg" alt="polar-bear-2731258_640" />
|
||||
<p class="caption">polar-bear-2731258_640</p>
|
||||
</div>
|
||||
<h3 id="md-39">1.1.6.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/42151289-1e3e493e-7dfa-11e8-893b-bfa06b71f36c.png" alt="image" />
|
||||
<p class="caption">image</p>
|
||||
</div>
|
||||
<h3 id="md-40">0.2.5.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://i.imgur.com/YFakAQEm.jpg" />
|
||||
|
||||
</div>
|
||||
<h3 id="md-41">1.4.0.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/56743052-7c9c9200-6793-11e9-9337-71ff9aadf5ad.jpg" alt="michal-mrozek-1238416-unsplash" />
|
||||
<p class="caption">michal-mrozek-1238416-unsplash</p>
|
||||
</div>
|
||||
<h3 id="md-42">0.1.7.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://i.imgur.com/MDl4TPpm.jpg" />
|
||||
|
||||
</div>
|
||||
<h3 id="md-43">1.0.9.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/30909382-7fadd112-a39e-11e7-924f-33a8d55d9b3d.jpg" alt="crab-215170_640" />
|
||||
<p class="caption">crab-215170_640</p>
|
||||
</div>
|
||||
<h3 id="md-44">1.4.8.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/66925281-b9ae5680-f049-11e9-9f04-7f979a0593e8.jpg" alt="StockSnap_ROLSQQ3UYQ1" />
|
||||
<p class="caption">StockSnap_ROLSQQ3UYQ1</p>
|
||||
</div>
|
||||
<h3 id="md-45">0.2.4.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://i.imgur.com/ElT9TrY.jpg" />
|
||||
|
||||
</div>
|
||||
<h3 id="md-46">1.5.0.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/73679601-bf0adc00-46e0-11ea-8761-ee58c232e0ed.jpg" alt="moritz-kindler-JWVZkqzsUHA-unsplash" />
|
||||
<p class="caption">moritz-kindler-JWVZkqzsUHA-unsplash</p>
|
||||
</div>
|
||||
<h3 id="md-47">1.2.3.md</h3>
|
||||
<div class="figure">
|
||||
<img src="https://user-images.githubusercontent.com/584253/48334786-d3992980-e681-11e8-8906-3c38480fdfe2.jpg" alt="crab-1990198_640" />
|
||||
<p class="caption">crab-1990198_640</p>
|
||||
</div>
|
|
@ -0,0 +1,191 @@
|
|||
### 0.2.0.md
|
||||
|
||||
![](http://static.boredpanda.com/blog/wp-content/uploads/2015/09/XX-Cutest-Bunnies__605.jpg)
|
||||
|
||||
### 1.0.11.md
|
||||
|
||||
![stocksnap_5ea8u6i0ad](https://user-images.githubusercontent.com/584253/33009946-884c471a-cdfe-11e7-9e54-30aec48d58a1.jpg)
|
||||
|
||||
### 1.4.3.md
|
||||
|
||||
![snail-3705324_640](https://user-images.githubusercontent.com/584253/58106019-0dd11e00-7c05-11e9-9764-4e5c10ac8215.jpg)
|
||||
|
||||
### 1.0.14.md
|
||||
|
||||
![loggerhead-turtle-123402_640](https://user-images.githubusercontent.com/584253/35221477-41c5371a-ffa0-11e7-8e14-bb97d8d8d0a5.jpg)
|
||||
|
||||
### 1.0.8.md
|
||||
|
||||
![animal-1867122_640](https://user-images.githubusercontent.com/584253/30211320-250a4676-94be-11e7-92b5-90cd61633a7d.jpg)
|
||||
|
||||
### 1.0.4.md
|
||||
|
||||
![image](https://user-images.githubusercontent.com/584253/28006071-561581ae-656b-11e7-934e-8632fc8be51d.png)
|
||||
|
||||
### 1.3.1.md
|
||||
|
||||
![iceland-2420768_640](https://user-images.githubusercontent.com/584253/49572719-61ef8b00-f962-11e8-92f6-46aa61957c0a.jpg)
|
||||
|
||||
### 1.1.7.md
|
||||
|
||||
![nutria-3442702_640](https://user-images.githubusercontent.com/584253/42445697-86b81af2-8391-11e8-9347-7fcdbcd3f979.jpg)
|
||||
|
||||
### 1.2.1.md
|
||||
|
||||
![animal-1839389_640](https://user-images.githubusercontent.com/584253/45617890-6908aa80-ba91-11e8-8521-2db22e3cf258.jpg)
|
||||
|
||||
### 1.4.10.md
|
||||
|
||||
![adam-berkecz-K6kZKJOmZrk-unsplash](https://user-images.githubusercontent.com/584253/71661101-2b598f00-2d73-11ea-9695-ea5f712eeb49.jpg)
|
||||
|
||||
### 1.0.3.md
|
||||
|
||||
![jh0406_barnimages com_0600](https://user-images.githubusercontent.com/584253/27283442-f02e9380-5511-11e7-8431-8133e634d61c.jpg)
|
||||
|
||||
### 0.2.8.md
|
||||
|
||||
![](https://i.imgur.com/CiKhpgHm.jpg)
|
||||
|
||||
### 1.3.0.md
|
||||
|
||||
![baby-cougar-1065101_640](https://user-images.githubusercontent.com/584253/48693600-eec6e480-ebff-11e8-9402-b719d40b9ee4.jpg)
|
||||
|
||||
### 1.1.3.md
|
||||
|
||||
![meerkat-3372211_640](https://user-images.githubusercontent.com/584253/39799332-891ae63e-5381-11e8-96ee-1c58c43486a1.jpg)
|
||||
|
||||
### 1.4.5.md
|
||||
|
||||
![crow-828944_640](https://user-images.githubusercontent.com/584253/61361068-5d4a6800-a89d-11e9-8a05-9bfd29eb963b.jpg)
|
||||
|
||||
### 1.1.2.md
|
||||
|
||||
![darin-ashby-483695-unsplash](https://user-images.githubusercontent.com/584253/38722652-3344db4e-3f1c-11e8-9fed-99f60c38fe9d.jpg)
|
||||
|
||||
### 1.0.2.md
|
||||
|
||||
![kittens-555822_640](https://cloud.githubusercontent.com/assets/584253/26580662/b4f8afb4-4556-11e7-9127-c52d541a8e96.jpg)
|
||||
|
||||
### 1.0.15.md
|
||||
|
||||
![cute_bird Indian golden oriole](https://user-images.githubusercontent.com/9717497/35992272-d4d95a4e-0d2f-11e8-82a5-ac73aefd004c.jpg)
|
||||
|
||||
### 1.0.13.md
|
||||
|
||||
![34680683-c1638fa8-f4bf-11e7-8a39-af52ea87db97](https://user-images.githubusercontent.com/584253/34708030-c49fdc4a-f536-11e7-8ec3-3e15fb1b2e2a.jpg)
|
||||
|
||||
### 1.1.5.md
|
||||
|
||||
![parrot-2818910_640](https://user-images.githubusercontent.com/584253/41531619-8961e3b8-7311-11e8-91fc-c75ee1e3589c.jpg)
|
||||
|
||||
### 0.2.6.md
|
||||
|
||||
![](https://i.imgur.com/PWs68Kpm.jpg)
|
||||
|
||||
### 1.1.0.md
|
||||
|
||||
![iguana-1057830_640](https://user-images.githubusercontent.com/584253/37600205-afce8abc-2bac-11e8-8f6c-5274a0acd3d3.jpg)
|
||||
|
||||
### 1.3.2.md
|
||||
|
||||
![falcon-2851648_640](https://user-images.githubusercontent.com/584253/50766239-70e99600-129e-11e9-960b-123002ef8f28.jpg)
|
||||
|
||||
### 1.0.12.md
|
||||
|
||||
![kittenasreindeer](https://user-images.githubusercontent.com/9717497/34322148-a35effd2-e845-11e7-981b-740f6d622f65.jpg)
|
||||
|
||||
### 1.0.6.md
|
||||
|
||||
![animal-1853024_640](https://user-images.githubusercontent.com/584253/29812083-23b8e92e-8cc3-11e7-80ec-58c397ace2f6.jpg)
|
||||
|
||||
### 1.2.0.md
|
||||
|
||||
![pony](https://user-images.githubusercontent.com/9717497/44724674-05720980-aaf1-11e8-8e74-26db880848cc.jpg)
|
||||
|
||||
### 1.1.4.md
|
||||
|
||||
![polarbear](https://user-images.githubusercontent.com/9717497/40906807-9457c610-67ff-11e8-8f35-62e97886fbfb.jpg)
|
||||
|
||||
### 1.0.5.md
|
||||
|
||||
![andrew-branch-123375-small](https://user-images.githubusercontent.com/584253/28417997-bfb69986-6d77-11e7-8f6f-28bf354ecef7.jpg)
|
||||
|
||||
### 1.4.9.md
|
||||
|
||||
![29906278353_737f4ef0a8_c](https://user-images.githubusercontent.com/584253/68370662-0544b380-0163-11ea-884e-ee8e8882f8ad.jpg)
|
||||
|
||||
### 0.2.7.md
|
||||
|
||||
![](https://i.imgur.com/ixXHkFn.jpg)
|
||||
|
||||
### 1.2.2.md
|
||||
|
||||
![dolphin](https://user-images.githubusercontent.com/9717497/46408467-e12ccc80-c72f-11e8-870b-f00fb61ea879.jpg)
|
||||
|
||||
### 1.3.4.md
|
||||
|
||||
![tim-marshall-131065-unsplash](https://user-images.githubusercontent.com/584253/54548621-4fa7d300-49ce-11e9-8b39-0d3d95168954.jpg)
|
||||
|
||||
### 1.1.1.md
|
||||
|
||||
![cutecow](https://user-images.githubusercontent.com/9717497/38190735-3505bb52-3683-11e8-88e1-aa41b71df9ef.jpg)
|
||||
|
||||
### 1.4.4.md
|
||||
|
||||
![polar-bear-196317_640](https://user-images.githubusercontent.com/584253/60387658-fa4a8a00-9ac3-11e9-897e-d9718cb1a006.jpg)
|
||||
|
||||
### 1.0.7.md
|
||||
|
||||
![hamster-690108_640](https://user-images.githubusercontent.com/584253/29974998-66803afa-8f52-11e7-8dc3-f8093aac7075.jpg)
|
||||
|
||||
### 0.2.10.md
|
||||
|
||||
![siamese-468814_640](https://cloud.githubusercontent.com/assets/584253/23647044/c6244582-0339-11e7-8a09-d5e80b0587e7.jpg)
|
||||
|
||||
### 1.0.1.md
|
||||
|
||||
![skitterphoto-597-default](https://cloud.githubusercontent.com/assets/584253/26578260/bbbe67b2-454c-11e7-8c67-95cde3a5ef91.jpg)
|
||||
|
||||
### 1.4.2.md
|
||||
|
||||
![pug-801826_640](https://user-images.githubusercontent.com/584253/57851715-e6daac80-77fe-11e9-9933-2ea8862bcd45.jpg)
|
||||
|
||||
### 1.0.10.md
|
||||
|
||||
![polar-bear-2731258_640](https://user-images.githubusercontent.com/584253/31381764-18212550-add3-11e7-862d-d76cf1d9e850.jpg)
|
||||
|
||||
### 1.1.6.md
|
||||
|
||||
![image](https://user-images.githubusercontent.com/584253/42151289-1e3e493e-7dfa-11e8-893b-bfa06b71f36c.png)
|
||||
|
||||
### 0.2.5.md
|
||||
|
||||
![](https://i.imgur.com/YFakAQEm.jpg)
|
||||
|
||||
### 1.4.0.md
|
||||
|
||||
![michal-mrozek-1238416-unsplash](https://user-images.githubusercontent.com/584253/56743052-7c9c9200-6793-11e9-9337-71ff9aadf5ad.jpg)
|
||||
|
||||
### 0.1.7.md
|
||||
|
||||
![](https://i.imgur.com/MDl4TPpm.jpg)
|
||||
|
||||
### 1.0.9.md
|
||||
|
||||
![crab-215170_640](https://user-images.githubusercontent.com/584253/30909382-7fadd112-a39e-11e7-924f-33a8d55d9b3d.jpg)
|
||||
|
||||
### 1.4.8.md
|
||||
|
||||
![StockSnap_ROLSQQ3UYQ1](https://user-images.githubusercontent.com/584253/66925281-b9ae5680-f049-11e9-9f04-7f979a0593e8.jpg)
|
||||
|
||||
### 0.2.4.md
|
||||
|
||||
![](https://i.imgur.com/ElT9TrY.jpg)
|
||||
|
||||
### 1.5.0.md
|
||||
|
||||
![moritz-kindler-JWVZkqzsUHA-unsplash](https://user-images.githubusercontent.com/584253/73679601-bf0adc00-46e0-11ea-8761-ee58c232e0ed.jpg)
|
||||
|
||||
### 1.2.3.md
|
||||
|
||||
![crab-1990198_640](https://user-images.githubusercontent.com/584253/48334786-d3992980-e681-11e8-8906-3c38480fdfe2.jpg)
|
|
@ -0,0 +1,48 @@
|
|||
http://static.boredpanda.com/blog/wp-content/uploads/2015/09/XX-Cutest-Bunnies__605.jpg
|
||||
https://user-images.githubusercontent.com/584253/33009946-884c471a-cdfe-11e7-9e54-30aec48d58a1.jpg
|
||||
https://user-images.githubusercontent.com/584253/58106019-0dd11e00-7c05-11e9-9764-4e5c10ac8215.jpg
|
||||
https://user-images.githubusercontent.com/584253/35221477-41c5371a-ffa0-11e7-8e14-bb97d8d8d0a5.jpg
|
||||
https://user-images.githubusercontent.com/584253/30211320-250a4676-94be-11e7-92b5-90cd61633a7d.jpg
|
||||
https://user-images.githubusercontent.com/584253/28006071-561581ae-656b-11e7-934e-8632fc8be51d.png
|
||||
https://user-images.githubusercontent.com/584253/49572719-61ef8b00-f962-11e8-92f6-46aa61957c0a.jpg
|
||||
https://user-images.githubusercontent.com/584253/42445697-86b81af2-8391-11e8-9347-7fcdbcd3f979.jpg
|
||||
https://user-images.githubusercontent.com/584253/45617890-6908aa80-ba91-11e8-8521-2db22e3cf258.jpg
|
||||
https://user-images.githubusercontent.com/584253/71661101-2b598f00-2d73-11ea-9695-ea5f712eeb49.jpg
|
||||
https://user-images.githubusercontent.com/584253/27283442-f02e9380-5511-11e7-8431-8133e634d61c.jpg
|
||||
https://i.imgur.com/CiKhpgHm.jpg
|
||||
https://user-images.githubusercontent.com/584253/48693600-eec6e480-ebff-11e8-9402-b719d40b9ee4.jpg
|
||||
https://user-images.githubusercontent.com/584253/39799332-891ae63e-5381-11e8-96ee-1c58c43486a1.jpg
|
||||
https://user-images.githubusercontent.com/584253/61361068-5d4a6800-a89d-11e9-8a05-9bfd29eb963b.jpg
|
||||
https://user-images.githubusercontent.com/584253/38722652-3344db4e-3f1c-11e8-9fed-99f60c38fe9d.jpg
|
||||
https://cloud.githubusercontent.com/assets/584253/26580662/b4f8afb4-4556-11e7-9127-c52d541a8e96.jpg
|
||||
https://user-images.githubusercontent.com/9717497/35992272-d4d95a4e-0d2f-11e8-82a5-ac73aefd004c.jpg
|
||||
https://user-images.githubusercontent.com/584253/34708030-c49fdc4a-f536-11e7-8ec3-3e15fb1b2e2a.jpg
|
||||
https://user-images.githubusercontent.com/584253/41531619-8961e3b8-7311-11e8-91fc-c75ee1e3589c.jpg
|
||||
https://i.imgur.com/PWs68Kpm.jpg
|
||||
https://user-images.githubusercontent.com/584253/37600205-afce8abc-2bac-11e8-8f6c-5274a0acd3d3.jpg
|
||||
https://user-images.githubusercontent.com/584253/50766239-70e99600-129e-11e9-960b-123002ef8f28.jpg
|
||||
https://user-images.githubusercontent.com/9717497/34322148-a35effd2-e845-11e7-981b-740f6d622f65.jpg
|
||||
https://user-images.githubusercontent.com/584253/29812083-23b8e92e-8cc3-11e7-80ec-58c397ace2f6.jpg
|
||||
https://user-images.githubusercontent.com/9717497/44724674-05720980-aaf1-11e8-8e74-26db880848cc.jpg
|
||||
https://user-images.githubusercontent.com/9717497/40906807-9457c610-67ff-11e8-8f35-62e97886fbfb.jpg
|
||||
https://user-images.githubusercontent.com/584253/28417997-bfb69986-6d77-11e7-8f6f-28bf354ecef7.jpg
|
||||
https://user-images.githubusercontent.com/584253/68370662-0544b380-0163-11ea-884e-ee8e8882f8ad.jpg
|
||||
https://i.imgur.com/ixXHkFn.jpg
|
||||
https://user-images.githubusercontent.com/9717497/46408467-e12ccc80-c72f-11e8-870b-f00fb61ea879.jpg
|
||||
https://user-images.githubusercontent.com/584253/54548621-4fa7d300-49ce-11e9-8b39-0d3d95168954.jpg
|
||||
https://user-images.githubusercontent.com/9717497/38190735-3505bb52-3683-11e8-88e1-aa41b71df9ef.jpg
|
||||
https://user-images.githubusercontent.com/584253/60387658-fa4a8a00-9ac3-11e9-897e-d9718cb1a006.jpg
|
||||
https://user-images.githubusercontent.com/584253/29974998-66803afa-8f52-11e7-8dc3-f8093aac7075.jpg
|
||||
https://cloud.githubusercontent.com/assets/584253/23647044/c6244582-0339-11e7-8a09-d5e80b0587e7.jpg
|
||||
https://cloud.githubusercontent.com/assets/584253/26578260/bbbe67b2-454c-11e7-8c67-95cde3a5ef91.jpg
|
||||
https://user-images.githubusercontent.com/584253/57851715-e6daac80-77fe-11e9-9933-2ea8862bcd45.jpg
|
||||
https://user-images.githubusercontent.com/584253/31381764-18212550-add3-11e7-862d-d76cf1d9e850.jpg
|
||||
https://user-images.githubusercontent.com/584253/42151289-1e3e493e-7dfa-11e8-893b-bfa06b71f36c.png
|
||||
https://i.imgur.com/YFakAQEm.jpg
|
||||
https://user-images.githubusercontent.com/584253/56743052-7c9c9200-6793-11e9-9337-71ff9aadf5ad.jpg
|
||||
https://i.imgur.com/MDl4TPpm.jpg
|
||||
https://user-images.githubusercontent.com/584253/30909382-7fadd112-a39e-11e7-924f-33a8d55d9b3d.jpg
|
||||
https://user-images.githubusercontent.com/584253/66925281-b9ae5680-f049-11e9-9f04-7f979a0593e8.jpg
|
||||
https://i.imgur.com/ElT9TrY.jpg
|
||||
https://user-images.githubusercontent.com/584253/73679601-bf0adc00-46e0-11ea-8761-ee58c232e0ed.jpg
|
||||
https://user-images.githubusercontent.com/584253/48334786-d3992980-e681-11e8-8906-3c38480fdfe2.jpg
|
|
@ -0,0 +1,925 @@
|
|||
---
|
||||
paginate: true
|
||||
inlineSVG: true
|
||||
footer: Slides: [captnemo.in/talks/ifsc](https://captnemo.in/talks/ifsc/)
|
||||
---
|
||||
|
||||
# IFSC
|
||||
|
||||
\-nemo
|
||||
\- Payments & Fintech deepdives
|
||||
|
||||
---
|
||||
|
||||
# Q: What does IFSC stand for?
|
||||
|
||||
---
|
||||
|
||||
# ![bg](https://fakeimg.pl/1920x800/ff4d4d/fff/?text=wrong)
|
||||
|
||||
---
|
||||
|
||||
## **International Financial Services Centre**
|
||||
|
||||
(Only partly kidding: <https://www.rbi.org.in/Scripts/NotificationUser.aspx?Id=9619&Mode=0>)
|
||||
|
||||
> In exercise of the powers conferred by section 47 of the Foreign Exchange Management Act, 1999 (42 of 1999), the Reserve Bank makes the following regulations relating to financial institutions set up in International Financial Services Centres, namely:-
|
||||
>
|
||||
> > (f) ‘International Financial Services Centre’ or ‘IFSC’ shall have the same meaning given in Section 2 (q) of the Special Economic Zones Act, 2005 (28 of 2005).
|
||||
|
||||
---
|
||||
|
||||
## Fine!
|
||||
|
||||
**Indian Financial System Code**
|
||||
|
||||
---
|
||||
|
||||
## Agenda
|
||||
|
||||
1. The [ifsc.razorpay.com](https://ifsc.razorpay.com) project.
|
||||
2. IFSC in the background.
|
||||
3. Future Scope / Collaboration ideas.
|
||||
|
||||
---
|
||||
|
||||
## some metrics first
|
||||
|
||||
- 4 Years since first release (Feb 2016)
|
||||
- 64 releases
|
||||
- 72 tags
|
||||
|
||||
```
|
||||
-------------------------------------------------------------------------------
|
||||
Language files blank comment code
|
||||
-------------------------------------------------------------------------------
|
||||
PHP 13 175 68 2063
|
||||
Ruby 9 111 23 2008
|
||||
JavaScript 5 26 1 1548
|
||||
YAML 5 4 24 1256
|
||||
Markdown 4 157 0 383
|
||||
Elixir 8 53 63 308
|
||||
Bourne Shell 2 10 13 31
|
||||
-------------------------------------------------------------------------------
|
||||
SUM: 47 536 192 7613
|
||||
-------------------------------------------------------------------------------
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 0.1.7
|
||||
|
||||
![bg 80%](0.1.7.png)
|
||||
|
||||
---
|
||||
|
||||
![bg 100%](google-image-search.jpg)
|
||||
|
||||
---
|
||||
|
||||
# the IFSC wall of cuteness
|
||||
|
||||
---
|
||||
|
||||
![bg 100%](cute-collage.jpg)
|
||||
|
||||
---
|
||||
|
||||
# what is it?
|
||||
|
||||
The IFSC Toolkit includes:
|
||||
|
||||
1. An API, served publicly at https://ifsc.razorpay.com
|
||||
2. A dataset, attached to every release in multiple formats
|
||||
3. An SDK that does multiple things:
|
||||
- Offline IFSC validations
|
||||
- Requests to the API
|
||||
- Offline Bank checks
|
||||
4. In various languages: Node.JS/PHP/Ruby/Elixir
|
||||
|
||||
---
|
||||
|
||||
# what's the source?
|
||||
|
||||
## 3 Primary Sources: RBI/NPCI/RTI
|
||||
|
||||
RBI publishes a list of all RTGS/NEFT branches as excel sheets:
|
||||
|
||||
- NEFT: [rbidocs.rbi.org.in/rdocs/content/docs/68774.xlsx](https://rbidocs.rbi.org.in/rdocs/content/docs/68774.xlsx)
|
||||
- RTGS: [rbidocs.rbi.org.in/rdocs/RTGS/DOCs/RTGEB0815.xlsx](https://rbidocs.rbi.org.in/rdocs/RTGS/DOCs/RTGEB0815.xlsx)
|
||||
|
||||
NPCI publishes a few lists:
|
||||
|
||||
- All Live ACH member banks: [npci.org.in/national-automated-clearing-live-members-1](https://www.npci.org.in/national-automated-clearing-live-members-1)
|
||||
- All UPI live member banks: [npci.org.in/upi-live-members](https://www.npci.org.in/upi-live-members)
|
||||
- [NBIN codes](https://docplayer.net/25942453-Imps-procedural-guidelines.html), published in IMPS Procedural guidelines v1.7
|
||||
|
||||
---
|
||||
|
||||
## Additional Sources
|
||||
|
||||
- Any interim RBI circulars
|
||||
- Any guidelines from NPCI
|
||||
- A few RBI/NCPI circulars
|
||||
|
||||
---
|
||||
|
||||
![bg](https://fakeimg.pl/1920x800/c56cf0/fff/?text=what's+the+data)
|
||||
|
||||
---
|
||||
|
||||
## `banks.json`
|
||||
|
||||
List of all Banks in India\* with the following details:
|
||||
|
||||
- Bank Code (4 characters)
|
||||
- Bank Type
|
||||
- Primary IFSC (Usually of the IMPS HO Branch)
|
||||
- Primary MICR (Used on Cheques)
|
||||
- IIN (First 6 digits of issued cards)
|
||||
- ABPS Support (true/false)
|
||||
- NACH/ACH Credit/Debit Support (true/false)
|
||||
- UPI Support (true)
|
||||
|
||||
\* - Based on all members listed in the NPCI ACH list.
|
||||
|
||||
---
|
||||
|
||||
## `banks.json`
|
||||
|
||||
```json
|
||||
{
|
||||
"SBIN": {
|
||||
// Bank Code
|
||||
"code": "SBIN",
|
||||
// Bank Type
|
||||
"type": "PSB",
|
||||
// Primary IMPS IFSC
|
||||
"ifsc": "SBIN0004343",
|
||||
"micr": "400002000",
|
||||
// IIN = BIN
|
||||
"iin": "508548",
|
||||
// Aadhaar Payments Bridge System
|
||||
"apbs": true,
|
||||
"ach_credit": true,
|
||||
"ach_debit": true,
|
||||
"nach_debit": true,
|
||||
"upi": true
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# `by-bank.tar.gz` (8.4MB)
|
||||
|
||||
A tar.gz file containing one JSON file for each bank, with a list of all known branches with the following details for every branch:
|
||||
|
||||
- IFSC
|
||||
- Branch name
|
||||
- Address (Centre/District/State/Address/Contact)
|
||||
- Bank Name
|
||||
- UPI/RTGS/NEFT/IMPS Support (`true/false`)
|
||||
- MICR
|
||||
|
||||
---
|
||||
|
||||
# `by-bank/PYTM.json`
|
||||
|
||||
Same as the data at <https://ifsc.razorpay.com/PYTM0000001>
|
||||
|
||||
```json
|
||||
{
|
||||
"PYTM0000001": {
|
||||
"BANK": "PAYTM PAYMENTS BANK LTD",
|
||||
"IFSC": "PYTM0000001",
|
||||
"BRANCH": "RTGS-HO",
|
||||
"CENTRE": "NOIDA",
|
||||
"DISTRICT": "NOIDA",
|
||||
"STATE": "UTTAR PRADESH",
|
||||
"ADDRESS": "B-121,Sector-5,Noida-201301",
|
||||
"CONTACT": "33996699",
|
||||
"IMPS": true,
|
||||
"RTGS": true,
|
||||
"CITY": "Gautam Buddh Nagar",
|
||||
"NEFT": true,
|
||||
"MICR": null
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# `IFSC-list.json` (4MB)
|
||||
|
||||
A single JSON file with every known IFSC code inside it.
|
||||
|
||||
---
|
||||
|
||||
# `IFSC.csv` (25MB)
|
||||
|
||||
Single CSV file containing the same fields as the by-bank JSON file. Covers all banks.
|
||||
|
||||
---
|
||||
|
||||
# `IFSC.json` (1.7MB)
|
||||
|
||||
A somewhat-compressed, human-readable JSON file containing all valid IFSCs for a bank, with leading zeroes removed.
|
||||
|
||||
```
|
||||
"ADCC": [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
|
||||
21,22,23,24,25,26,28,29,30,31,32,33,34,35,36,37,38
|
||||
39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55
|
||||
56,57,58,59,60,61,62,64,65,66,67,68,110,114,70,71
|
||||
72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87
|
||||
88,89,90,91,92,93,94,95,96,97,98,99,100,101,102
|
||||
103,104,105,106,107,108,109,111,112,113,115,116]
|
||||
```
|
||||
|
||||
`ADCC0000001` to `ADCC0000116` are all valid branches.
|
||||
|
||||
---
|
||||
|
||||
# `banknames.json`
|
||||
|
||||
A manually curated human-readable list of all banknames against 4 letter bank codes. Currently at 1437 entries.
|
||||
|
||||
```json
|
||||
"CCOB": "City Co-operative Bank",
|
||||
"CCUX": "Chengelpattu Co-operative Urban Bank",
|
||||
"CDCX": "Cuddalore District Central Co-operative Bank",
|
||||
"CEBX": "Central Co-operative Bank Bikaner",
|
||||
"CGBX": "Chhattisgarh Gramin Bank",
|
||||
"CGGX": "Chaitanya Godavari Grameena Bank",
|
||||
"CHAS": "JP Morgan Chase Bank",
|
||||
"CHAX": "Chamoli Zila Sahkari Bank",
|
||||
"CHBX": "Chamba Urban Co-operative Bank",
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# The API
|
||||
|
||||
Has a single `/:ifsc` endpoint that returns all the information about the branch from the IFSC code. <https://ifsc.razorpay.com/PUNB0026200>
|
||||
|
||||
```json
|
||||
{
|
||||
"BRANCH": "KASHIPUR",
|
||||
"CENTRE": "KASHIPUR",
|
||||
"DISTRICT": "KASHIPUR (UTTARANCHAL)",
|
||||
"STATE": "UTTARAKHAND",
|
||||
"ADDRESS": "MATA MANDIR ROAD,DISTT. UDHAM SINGH NAGAR",
|
||||
"CONTACT": "",
|
||||
"UPI": true,
|
||||
"RTGS": true,
|
||||
"CITY": "KASHIPUR (UTTARANCHAL)",
|
||||
"NEFT": true,
|
||||
"IMPS": true,
|
||||
"MICR": "",
|
||||
"BANK": "Punjab National Bank",
|
||||
"BANKCODE": "PUNB",
|
||||
"IFSC": "PUNB0026200"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Code Examples
|
||||
|
||||
### PHP
|
||||
|
||||
```php
|
||||
IFSC::validate('KKBK0000261'); // true
|
||||
IFSC::validateBankCode('PUNB'); // true
|
||||
|
||||
IFSC::getBankName('PUNB'); // Returns 'Punjab National Bank'
|
||||
IFSC::getBankName('ABCD'); // Returns null
|
||||
|
||||
IFSC::getBankName(Bank::PUNB); //Returns Punjab National Bank
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
```php
|
||||
Bank::getDetails(Bank::PUNB);
|
||||
Bank::getDetails('PUNB');
|
||||
|
||||
// Returns an array:
|
||||
// [
|
||||
// 'code' => 'PUNB',
|
||||
// 'type' => 'PSB',
|
||||
// 'ifsc' => 'PUNB0244200',
|
||||
// 'micr' => '110024001',
|
||||
// 'iin' => '508568',
|
||||
// 'apbs' => true,
|
||||
// 'ach_credit' => true,
|
||||
// 'ach_debit' => true,
|
||||
// 'nach_debit' => true,
|
||||
// 'name' => 'Punjab National Bank',
|
||||
// 'bank_code' => '024',
|
||||
// 'upi' => true
|
||||
// ]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## lookups
|
||||
|
||||
```php
|
||||
$client = new Client();
|
||||
$res = $client->lookupIFSC('KKBK0000261');
|
||||
|
||||
echo $res->bank; // 'KOTAK MAHINDRA BANK LIMITED'
|
||||
echo $res->branch; // 'GURGAON'
|
||||
echo $res->address; // 'JMD REGENT SQUARE,MEHRAULI GURGAON ROAD,OPPOSITE BRISTOL HOTEL,'
|
||||
echo $res->contact; // '4131000'
|
||||
echo $res->city; // 'GURGAON'
|
||||
echo $res->district; // 'GURGAON'
|
||||
echo $res->state; // 'HARYANA'
|
||||
echo $res->getBankCode(); // KKBK
|
||||
echo $res->getBankName(); // 'Kotak Mahindra Bank'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Node.js
|
||||
|
||||
```js
|
||||
ifsc.validate('BOTM0XEEMRA'); // returns false
|
||||
|
||||
// Look ma, promises!
|
||||
ifsc.fetchDetails('KKBK0000261').then(function(res) {
|
||||
console.log(res);
|
||||
});
|
||||
|
||||
console.log(ifsc.bank.PUNB); // Prints 'PUNB'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Ruby
|
||||
|
||||
```ruby
|
||||
Razorpay::IFSC::IFSC.validate! 'KKBK0000261' # => true
|
||||
|
||||
# Fetches details over API, constants as well
|
||||
Razorpay::IFSC::Bank.get_details Razorpay::IFSC::Bank::PUNB
|
||||
{
|
||||
code: 'PUNB',
|
||||
type: 'PSB',
|
||||
ifsc: 'PUNB0244200',
|
||||
micr: '110024001',
|
||||
bank_code: '024',
|
||||
iin: '508568',
|
||||
apbs: true,
|
||||
ach_credit: true,
|
||||
ach_debit: true,
|
||||
nach_debit: true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Support Matrix
|
||||
|
||||
| Language | Validation | API Client | Sublet Support (Custom) | Bank Constants |
|
||||
| -------- | ---------- | ---------- | ----------------------- | -------------- |
|
||||
| PHP | ✅ | ✅ | ✅ (✅) | ✅ |
|
||||
| Ruby | ✅ | ✅ | ✅ (✅) | ✅ |
|
||||
| Elixir | ✅ | ✅ | ✅ (❎) | ❎ |
|
||||
| Node.js | ✅ | ✅ | ❎ (❎) | ✅ |
|
||||
|
||||
---
|
||||
|
||||
# Growth Chart
|
||||
|
||||
![](chart.png)
|
||||
|
||||
---
|
||||
|
||||
![bg](https://fakeimg.pl/1920x800/c56cf0/fff/?text=planned+learnings)
|
||||
|
||||
---
|
||||
|
||||
# planned learnings
|
||||
|
||||
- polyglot-single-repo-packages
|
||||
- open-data-superfast-public-APIs
|
||||
- scapegoat-application for random tests
|
||||
|
||||
---
|
||||
|
||||
# polyglot
|
||||
|
||||
```
|
||||
src/banknames.json
|
||||
src/ruby
|
||||
src/banks.json
|
||||
src/patches
|
||||
src/custom-sublets.json
|
||||
src/elixir
|
||||
src/node
|
||||
src/IFSC.json
|
||||
src/sublet.json
|
||||
src/php
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
![bg](https://fakeimg.pl/1920x800/c56cf0/fff/?text=unplanned+learnings)
|
||||
|
||||
---
|
||||
|
||||
# 1. There are too many banks in India
|
||||
|
||||
- `banknames.json` holds 1400+ named banks
|
||||
- Adding sublets, it adds up to atleast 2500+
|
||||
- Not all banks are recognized by RBI (with a 4 letter code)
|
||||
|
||||
---
|
||||
|
||||
# 2. There are 11 kinds of banks in India:
|
||||
|
||||
- DCCB (District Co-operative Central Bank)
|
||||
- Foreign Bank
|
||||
- LAB (Local Area Bank)
|
||||
- O-UCB (Urban Co-operative Bank)
|
||||
- PB (Payment Bank)
|
||||
- Private (Private Sector Banks)
|
||||
- PSB (Public Sector Bank)
|
||||
- RRB (Regional Rural Bank)
|
||||
- S-UCB (State Urban Co-operative Banks)
|
||||
- SCB (State Co-operative Bank)
|
||||
- SFB (Small Finance Bank)
|
||||
|
||||
---
|
||||
|
||||
# 3. RBI has no idea what its doing.
|
||||
|
||||
```
|
||||
"IPOS": "India Post Payments Bank",
|
||||
"IPPB": "India Post Payments Bank",
|
||||
```
|
||||
|
||||
## `IPOS0000001`
|
||||
|
||||
---
|
||||
|
||||
# 3.1 AJAR/AJUX
|
||||
|
||||
```
|
||||
"AJAR": "Ajara Urban Co-operative Bank",
|
||||
"AJUX": "Ajara Urban Co-operative Bank",
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3.2 CXBX (Chartered Sahakari Bank Niyamitha)
|
||||
|
||||
`CSBX0CSB001` (Supports only IMPS, not listed by RBI)
|
||||
|
||||
---
|
||||
|
||||
## 3.3 KOEX (KEB Hana Bank)
|
||||
|
||||
```
|
||||
KOEX0000001: RTGS/NEFT/IMPS
|
||||
KOEX0000002: RTGS/NEFT/IMPS
|
||||
KOEX00000SC: RTGS/IMPS
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 4. The NPCI doesn't come under RTI
|
||||
|
||||
> The contention arises from the fact that while it is incorporated as a non-profit organisation, 57 percent of its shares are held by public sector banks.
|
||||
|
||||
> “In a reply to an RTI, we found that AP Hota, the chief general manager of the RBI, was deputed by the Bank for two years to the management. Moreover, the RTI also revealed that RBI had provided office space as well as an inventory list of items to NPCI.”
|
||||
|
||||
## Judgement:
|
||||
|
||||
> Commission is also of the view that it may be open to the complainantto seek information through public authority for NPCI i.e. RBI or Ministry of Financeas the case may be. That being so, the complaint of the complainant is unfounded and the same is rejected. <https://bit.ly/39dsFK6> (Dec 2019)
|
||||
|
||||
---
|
||||
|
||||
# 5. Companies still use MICR
|
||||
|
||||
(Magnetic Ink Character Recognition code)
|
||||
|
||||
```
|
||||
000 000 000
|
||||
City Bank Branch
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 6. IBAN
|
||||
|
||||
## International Bank Account Number
|
||||
|
||||
> the Committee felt that longest IBAN is most suitable for the country. Longest IBAN envisages 26 digits IBAN for the banks in India with 18 digit account number, 4 digit bank code, 2 digit country code and 2 check digits. Under this system, banks can continue to use the existing account numbers, and where necessary the number will be padded with zeros to make the length of 18 digits as required.
|
||||
|
||||
`IN` + Check Digit + Bank Code + Account Number
|
||||
|
||||
- Bank Code: `[:alpha:]{4}`
|
||||
- Check Digit: `[:digit:]{2}`
|
||||
- Account Number: `[:alphanum:]{18}`
|
||||
|
||||
Source: <https://www.iban.in/structure.html>
|
||||
|
||||
---
|
||||
|
||||
# 7. Bank Mergers are fun!
|
||||
|
||||
> After merger, for all outward IMPS transactions of associate banks the IFS Code will changeand will be intimated to customer. However for all the inward IMPS transaction bank will support old IFSC number till 1 Month from the date of merger.
|
||||
>
|
||||
> - [SBI](https://bank.sbi/webfiles/uploads/files/mergerofassociatebanks/IMPS%20Merger%20FAQ.pdf)
|
||||
|
||||
But every merger is handled differently.
|
||||
|
||||
---
|
||||
|
||||
# 8. Naming banks is hard
|
||||
|
||||
- 20 different ways to write "Co-operative"
|
||||
- Zhilla, Zila, Jila, Jhila, District
|
||||
- Sahkari, Sahakari, Sah.,
|
||||
|
||||
This was so problematic, that I ended up writing [Guidelines on how to keep bank names consistent](https://github.com/razorpay/ifsc/blob/master/CONTRIBUTING.md#bank-names-guidelines).
|
||||
|
||||
---
|
||||
|
||||
# 8.5 Guiding Principles
|
||||
|
||||
1. Keep "dataset" current (no dead IFSCs).
|
||||
2. Keep list of banks comprehensive (include dead banks).
|
||||
3. Only use official upstream sources.
|
||||
|
||||
---
|
||||
|
||||
# 9. IFSC Issuance Process
|
||||
|
||||
- RBI issues 4 letter Bank Codes.
|
||||
- They end in "X" for banks not connected to RBI payment/settlement systems
|
||||
- Banks inform RBI of IFSCs for each branch via [SFMS](http://www.idrbt.ac.in/sfms.html)
|
||||
- Banks inform NPCI separately of IFSCs for each branch via NFS (?)
|
||||
- Issuance of each branch code is entirely owned by the bank.
|
||||
|
||||
---
|
||||
|
||||
# 10. So many codes
|
||||
|
||||
- IFSC code for IMPS
|
||||
- IFSC code for NEFT/RTGS
|
||||
- MICR code for cheques
|
||||
- SWIFT/SWIFT-BIC/BIC code for International inbound transfers
|
||||
- IBAN (International Bank Account Number)
|
||||
- NBIN (National Bank Identification) `[:digit:]{4}``
|
||||
- MMID `[:digit:]{7}` (NBIN+MAS (Mobile Account Selector, `[:digit:]{3}`))
|
||||
|
||||
---
|
||||
|
||||
# 11. I have no idea what I'm doing
|
||||
|
||||
- NBIN format
|
||||
- Compression/Bloom Filter attempts
|
||||
|
||||
---
|
||||
|
||||
# 12. NPCI has no idea what it's doing
|
||||
|
||||
`@jio,@ezeepay,@lime,@purz,@s2b,@srcb,@upi`
|
||||
|
||||
UPI handles with unknown issuing bank.
|
||||
|
||||
What happens to MDR?
|
||||
|
||||
---
|
||||
|
||||
# 13. RBI doesn't care about data sanity
|
||||
|
||||
## 13.1 Encoding Issues
|
||||
|
||||
`"CHENNAI - CENOTAPH ROAD "`
|
||||
`"1, CENOTAPH ROAD, CHENNAI. "`
|
||||
|
||||
---
|
||||
|
||||
## 13.2 RBI Excel Sheets are broken
|
||||
|
||||
```
|
||||
[WARN] IFSC code longer than 11 characters: IOBA0003378 RO-TIRUPATHI, using IOBA0003378
|
||||
[WARN] IFSC code longer than 11 characters: BANK OF BARODA, using BANKOFBAROD
|
||||
[WARN] Second Entry found for HDFC0000917, discarding
|
||||
[WARN] Second Entry found for FDRL0001808, discarding
|
||||
[WARN] Second Entry found for ICIC0000248, discarding
|
||||
[WARN] Second Entry found for ICIC0000557, discarding
|
||||
[WARN] Second Entry found for ICIC0006252, discarding
|
||||
[WARN] Second Entry found for CNRB0006822, discarding
|
||||
[WARN] Second Entry found for DBSS0IN0901, discarding
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# 13.3 RBI Excel Sheets are very broken
|
||||
|
||||
```
|
||||
[WARN] Second Entry found for ICIC0002261, discarding
|
||||
[WARN] Second Entry found for IDFB0040138, discarding
|
||||
[WARN] Second Entry found for CBIN0284329, discarding
|
||||
[WARN] Second Entry found for UTIB0002805, discarding
|
||||
[WARN] Second Entry found for DCBL0000126, discarding
|
||||
[WARN] Second Entry found for ICIC0000276, discarding
|
||||
[WARN] Second Entry found for ICIC0006033, discarding
|
||||
[WARN] IFSC code longer than 11 characters: IOBA0003379 RO-NAGERCOIL, using IOBA0003379
|
||||
[WARN] IFSC code longer than 11 characters: IOBA0003392
|
||||
[INFO] Removed BANKOFBAROD from the list
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
![bg 80%](rbi-issues.jpg)
|
||||
|
||||
---
|
||||
|
||||
![bg 70%](rbi-response.png)
|
||||
|
||||
---
|
||||
|
||||
![bg 80%](rbi-email-1.png)
|
||||
|
||||
---
|
||||
|
||||
![bg 80%](rbi-email-2.png)
|
||||
|
||||
---
|
||||
|
||||
# 14. [NEFT blocks](https://github.com/razorpay/ifsc/issues/154)
|
||||
|
||||
> the below following banks have been temporarily kept out of NEFT system (only) due to technical non-compliance, as such these bank will not be in a position to receive or make payments through NEFT till further orders.
|
||||
|
||||
> The NEFT payments will be REJECTED by RBI with reason as “SENDER OR BENEFICIARY BANK NOT PARTICIPANT OF NEFT”, if we received and sent for settlement.
|
||||
|
||||
---
|
||||
|
||||
# NEFT Blocks
|
||||
|
||||
| Bank Name | IFSC Main Code | Total Branches |
|
||||
| ---------------------------- | -------------- | -------------- |
|
||||
| BANK OF CEYLON | BCEY | 3 |
|
||||
| KAVERI GRAMEENA BANK | KGRB | 488 |
|
||||
| KERALA GRAMIN BANK | KLGB | 650 |
|
||||
| KRUNG THAI BANK PCL | KRTH | 2 |
|
||||
| PRAGATHI KRISHNA GRAMIN BANK | PKGB | 1160 |
|
||||
| SBM BANK MAURITIUS LTD | STCB | 2 |
|
||||
|
||||
---
|
||||
|
||||
# ![bg](https://fakeimg.pl/1920x800/ff4d4d/fff/?text=HDFC0CSSUCB&font=bebas)
|
||||
|
||||
---
|
||||
|
||||
# 15. Sublet Branches
|
||||
|
||||
```json
|
||||
{
|
||||
"RTGS": true,
|
||||
"CONTACT": "9890960146",
|
||||
"CITY": "SOLAPUR",
|
||||
"IMPS": true,
|
||||
"ADDRESS": "6151 1 SIDDHESHWAR SHOPING CENTER SHOP NO 18 19 SIDHESHWAR PETH SOLAPUR",
|
||||
"DISTRICT": "SOLAPUR",
|
||||
"CENTRE": "SOLAPUR",
|
||||
"STATE": "MAHARASHTRA",
|
||||
"NEFT": true,
|
||||
"BRANCH": "Solapur Social Urban Co-operative Bank IMPS",
|
||||
"MICR": "413590002",
|
||||
"UPI": true,
|
||||
"BANK": "Solapur Social Urban Co-operative Bank",
|
||||
"BANKCODE": "SSLX",
|
||||
"IFSC": "HDFC0CSSUCB"
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Sublet Identification
|
||||
|
||||
1. [NPCI ACH List](https://www.npci.org.in/national-automated-clearing-live-members-1) documents the IFSC that each bank provides for their IMPS setup
|
||||
2. The Excel sheets provided by RBI have a bank name in the "branch name" field.
|
||||
|
||||
Becomes much harder because bank names submitted to RBI may be different from what's submitted to NPCI, and doing exact matches for bank names is impossible.
|
||||
|
||||
---
|
||||
|
||||
# ![bg](https://fakeimg.pl/1920x800/ff4d4d/fff/?text=the+tech)
|
||||
|
||||
---
|
||||
|
||||
# tech
|
||||
|
||||
1. scraper, written in ruby/bash (~400 lines)
|
||||
2. release notes generator script, written in PHP
|
||||
3. A patch manager to "fix" issues
|
||||
|
||||
---
|
||||
|
||||
# run it yourselves:
|
||||
|
||||
```sh
|
||||
git clone https://github.com/razorpay/ifsc.git
|
||||
cd ifsc/scraper
|
||||
bundle install
|
||||
cd scripts
|
||||
./bootstrap.sh
|
||||
```
|
||||
|
||||
Check the `ifsc/scraper/scripts/data` directory once it finishes.
|
||||
|
||||
---
|
||||
|
||||
```yaml
|
||||
---
|
||||
# https://github.com/razorpay/ifsc/issues/154
|
||||
action: patch
|
||||
patch:
|
||||
NEFT: false
|
||||
ifsc:
|
||||
# - KRTH0INBB00
|
||||
- BCEY0000001
|
||||
- BCEY0CHEN01
|
||||
- KGRB0000001
|
||||
- KGRB0000002
|
||||
- KGRB0000004
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
```yaml
|
||||
---
|
||||
# https://github.com/razorpay/ifsc/issues/126
|
||||
# Source: https://www.npci.org.in/upi-live-members
|
||||
# Last Updated: Jan 2020 (Count = 143)
|
||||
action: patch
|
||||
patch:
|
||||
:upi: true
|
||||
banks:
|
||||
- ABHY
|
||||
- ACBX
|
||||
- ADBX
|
||||
- AGVX
|
||||
- AIRP
|
||||
- ALLA
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# Rigorous Tests
|
||||
|
||||
## Ensure Coverage between datasets
|
||||
|
||||
```
|
||||
testNames
|
||||
testConstants
|
||||
testCoverageAgainstBankNames
|
||||
testConstantsAgainstNames
|
||||
testSubletsAgainstConstants
|
||||
testConstantsAgainstCompleteBanksList
|
||||
testSubletCoverage
|
||||
testValidateJsonFormat
|
||||
testNpciListAgainstRbi
|
||||
testPatches
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ensure common tests between languages
|
||||
|
||||
```json
|
||||
"testBasicValidator": {
|
||||
"KKBK0000261": true,
|
||||
"HDFC0002854": true,
|
||||
},
|
||||
"testValidateStringLookup": {
|
||||
"BOTM0NEEMRA": true,
|
||||
"BARB0ZOOTIN": true
|
||||
},
|
||||
"testValidateInvalidCode": {
|
||||
"BOTM0XEEMRA": false,
|
||||
},
|
||||
"testHPSC": {
|
||||
"HPSC0000406": true,
|
||||
"HPSC0000300": false
|
||||
},
|
||||
"testEdgeCases": {
|
||||
"SBMY0040704": false
|
||||
},
|
||||
"testSBIOldCodes": {
|
||||
"SBBJ0010004": false,
|
||||
"SBBJ0010006": false,
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ensure coverage across languages
|
||||
|
||||
```ruby
|
||||
it 'should match all constants defined in PHP' do
|
||||
constants_file = File.readlines('src/php/Bank.php')
|
||||
bank_constants = constants_file
|
||||
.select { |e| e.match(/const/) }
|
||||
.map { |e| e[/\s+const (\w{4})/, 1] }
|
||||
bank_constants.each do |c|
|
||||
expect(described_class::const_get(c)).to eq c.to_sym
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Ensure coverage across languages
|
||||
|
||||
```js
|
||||
// Validates that all constants defined in PHP are also defined in Node
|
||||
let file = fs
|
||||
.readFileSync('src/php/Bank.php')
|
||||
.toString()
|
||||
.split('\n')
|
||||
.filter((l) => {
|
||||
return l.indexOf('const') > -1;
|
||||
})
|
||||
.map((l) => {
|
||||
return l.match(/\s+const (\w{4})/)[1];
|
||||
})
|
||||
.forEach((code) => {
|
||||
assert.equal(BANK[code], code);
|
||||
assert.equal(IFSC.bank[code], code);
|
||||
});
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## The API (<https://github.com/razorpay/ifsc-api/>)
|
||||
|
||||
1. Has all the data committed (huge repo, split-off)
|
||||
2. Multi-stage docker build (150MB)
|
||||
3. Uses Ruby/Sinatra/Redis for serving requests
|
||||
|
||||
---
|
||||
|
||||
# Future Scope
|
||||
|
||||
1. [SWIFT code](https://github.com/razorpay/ifsc/issues/125) for every bank branch. ([In Progress](https://github.com/razorpay/ifsc/pull/176))
|
||||
2. [AePS Membership Status](https://github.com/razorpay/ifsc/issues/186)
|
||||
3. Document _all sublet branches, even the undeclared ones_. ([WIP](https://github.com/razorpay/ifsc/pull/166))
|
||||
4. Document _all banks, even the undeclared/dead ones_ ([WIP](https://github.com/razorpay/ifsc/pull/166))
|
||||
5. Support for more languages. Contributions welcome.
|
||||
6. Improve API to support usecases with free-text search.
|
||||
7. Add support for hotlinking bank logos (`https://ifsc.razorpay.com/PUNB.svg`)
|
||||
|
||||
---
|
||||
|
||||
# Special Sublet Work
|
||||
|
||||
```yaml
|
||||
HDFC0CSLABK: Subhadra Local Area Bank
|
||||
HDFC0CSLCBL: Shree Laxmi Co-operative Bank
|
||||
HDFC0CSLKUB: Shri Laxmikrupa Urban Co-operative Bank
|
||||
HDFC0CSMCBL: Satana Merchants Co-operative Bank
|
||||
HDFC0CSMLCB: Shree Mahayogi Lakshmamma Co-operative Bank
|
||||
HDFC0CSMNSB: Sanmitra Mahila Nag Sahakari Bank
|
||||
HDFC0CSMPAY: Sangamner Merch Co-operative Bank
|
||||
HDFC0CSMPBA: Shankarrao Mohite Patil Sah.bank
|
||||
HDFC0CSMRTB: Smriti Nagrik Sahakari Bank
|
||||
HDFC0CSMSSB: Shri Mahila Sewa Sahakari Bank
|
||||
HDFC0CSMUCB: Shri Mahavir Urb Co-operative Bank
|
||||
HDFC0CSNCBL: Saraspur Nagarik Co. Op. Bank
|
||||
HDFC0CSNCBR: Surat National Co-operative Bank
|
||||
HDFC0CSNSB0: Sankheda Nagrik Sahakari Bank
|
||||
HDFC0CSNSBB: Sarakari Naukarara Sahakari Bank
|
||||
HDFC0CSNSBH: Sihor Nagarik Sahakari Bank
|
||||
HDFC0CSNSBL: Sonbhadra Nagar Sahakari Bank
|
||||
HDFC0CSNSBM: Sadguru Nagrik Sahakari Bank
|
||||
HDFC0CSNSBS: Sehore Nagrik Sahakari Bank
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
# RBI
|
||||
|
||||
List of all [Non-scheduled Urban Co-operative Banks](https://rbidocs.rbi.org.in/rdocs/Content/pdfs/nonschedulecoop.pdf)(PDF):
|
||||
|
||||
```yaml
|
||||
Name: Shankerrao Mohite-Patil Sahakari Bank Ltd
|
||||
RO Name: NAGPUR
|
||||
HO Address: "Sahakar Mandir", Mahaveer Path, Akluj, Solapur, Maharashtra
|
||||
Pincode: 413101
|
||||
```
|
||||
|
||||
<!-- Limbo Bank, registered with RBI, but without a code -->
|
||||
|
||||
---
|
||||
|
||||
## [captnemo.in/talks/ifsc/](https://captnemo.in/talks/ifsc/)
|
||||
|
||||
Source : https://github.com/captn3m0/talks/tree/gh-pages/ifsc
|
After Width: | Height: | Size: 160 KiB |
After Width: | Height: | Size: 121 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 23 KiB |
|
@ -0,0 +1,5 @@
|
|||
Version 1
|
||||
|
||||
IFSC Codes generated on 2016-02-04.
|
||||
|
||||
The API itself is accessible at https://ifsc.razorpay.com/
|
|
@ -0,0 +1,7 @@
|
|||
Version 2
|
||||
|
||||
IFSC Codes generated on 2016-03-09. As per RBI website, the data was last updated at February 29, 2016
|
||||
|
||||
The API itself is accessible at https://ifsc.razorpay.com/
|
||||
|
||||
This release also drops support for MICR codes.
|
|
@ -0,0 +1,5 @@
|
|||
Version 3
|
||||
|
||||
IFSC Codes generated on 2016-04-08. As per RBI website, the data was last updated at March 22, 2016
|
||||
|
||||
The API itself is accessible at https://ifsc.razorpay.com/
|
|
@ -0,0 +1,5 @@
|
|||
0.1.1
|
||||
|
||||
Updated by RBI on May 09, 2016
|
||||
|
||||
We are moving to a semantic versioning scheme, that we will be using for all the language packages as well.
|
|
@ -0,0 +1,5 @@
|
|||
0.1.2
|
||||
|
||||
New dataset release. Updated as per the dump by RBI on June 4.
|
||||
|
||||
Also a new package release.
|
|
@ -0,0 +1,9 @@
|
|||
0.1.4
|
||||
|
||||
RBI Update Date: July 15, 2016
|
||||
Total Count: 132270
|
||||
Release Date: Aug 1, 2016
|
||||
|
||||
The delay in the dates is because RBI published the dataset late. Their update date is not the same as publish date.
|
||||
|
||||
The PHP package has been updated to `0.1.4` as well.
|
|
@ -0,0 +1,9 @@
|
|||
0.1.5
|
||||
|
||||
Release Date: 29th August 2016
|
||||
RBI Update Date: 24th August 2016
|
||||
Count: 133222
|
||||
|
||||
The PHP package has been updated to `0.1.5` along with the https://ifsc.razorpay.com API
|
||||
|
||||
Fun fact: 952 new branches in this release, compared to `0.1.4`
|
|
@ -0,0 +1,9 @@
|
|||
0.1.6
|
||||
|
||||
Release Date: 12 October, 2016
|
||||
RBI Update Date: 07 September, 2016
|
||||
Count: 133424
|
||||
|
||||
The PHP package has been updated to `0.1.6` along with the https://ifsc.razorpay.com API
|
||||
|
||||
Fun fact: 202 new branches in this release.
|
|
@ -0,0 +1,13 @@
|
|||
0.1.7
|
||||
|
||||
Release Date: 03 November, 2016
|
||||
RBI Update Date: 18 October, 2016
|
||||
Count: 133424
|
||||
|
||||
The PHP package has been updated to 0.1.7 along with the https://ifsc.razorpay.com API
|
||||
|
||||
365 new branches in this release.
|
||||
|
||||
Here is a cute bunny:
|
||||
|
||||
![](https://i.imgur.com/MDl4TPpm.jpg)
|
|
@ -0,0 +1,17 @@
|
|||
0.2.0
|
||||
|
||||
Release Date: 15 November, 2016
|
||||
RBI Update Date: 02 November, 2016
|
||||
Count: 134033
|
||||
|
||||
The PHP package has been updated to 0.2.0 along with the https://ifsc.razorpay.com API
|
||||
|
||||
The PHP package adds functionality to validate a bank code along with an IFSC code now. We also provide a way to get a Bank name given a Bank Code (First 4 letters of an IFSC code)
|
||||
|
||||
609 new branches in this release.
|
||||
|
||||
Here is a cute bunny:
|
||||
|
||||
![](http://static.boredpanda.com/blog/wp-content/uploads/2015/09/XX-Cutest-Bunnies__605.jpg)
|
||||
|
||||
**Note**: Due to an issue with GitHub uploads, we have lost most of this release files.
|
|
@ -0,0 +1,11 @@
|
|||
0.2.1
|
||||
|
||||
Release Date: 01 December, 2016
|
||||
RBI Update Date: 17 November, 2016
|
||||
Count: 133635
|
||||
|
||||
The PHP and NPM packages have been updated to 0.2.0 along with the https://ifsc.razorpay.com API
|
||||
|
||||
Here is a cute bunny:
|
||||
|
||||
![](https://i.imgur.com/b6XaNB3.gif)
|
|
@ -0,0 +1,17 @@
|
|||
0.2.4
|
||||
|
||||
Release Date: 16 December, 2016
|
||||
RBI Update Date: 05 December, 2016
|
||||
Count: 134241
|
||||
|
||||
The PHP and NPM packages have been updated to 0.2.4 along with the https://ifsc.razorpay.com API
|
||||
|
||||
## Updates
|
||||
1. The Razorpay\IFSC\Bank class has constants defined for all known Bank Codes (PHP)
|
||||
2. `Razorpay\IFSC\IFSC::getBankName` and `IFSC::validateBankCode` have been added (PHP)
|
||||
3. Metadata Updates (New Branches added)
|
||||
4. Drops the marshal and bloom filter formats from the release
|
||||
|
||||
Here is a cute bunny:
|
||||
|
||||
![](https://i.imgur.com/ElT9TrY.jpg)
|
|
@ -0,0 +1,17 @@
|
|||
0.2.5
|
||||
|
||||
Release Date: 02 Jan 2017
|
||||
RBI Update Date: 23 Dec 2016
|
||||
Count: 134472
|
||||
|
||||
_Note_: RBI backdates the releases. Even though the website says 23rd Dec, the change wasn't live on their website till much later.
|
||||
|
||||
The PHP and NPM packages have been updated to 0.2.5 along with the https://ifsc.razorpay.com API
|
||||
|
||||
**Updates**
|
||||
- Usual metadata updates from RBI about new branches
|
||||
- One new Bank has been added to the list: `"IDUK": "Idukki District Co-Operative Bank Ltd",`
|
||||
|
||||
Here is a cute hamster:
|
||||
|
||||
![](https://i.imgur.com/YFakAQEm.jpg)
|
|
@ -0,0 +1,16 @@
|
|||
0.2.6
|
||||
|
||||
Release Date: 16 Jan 2017
|
||||
RBI Update Date: 07 Dec 2016
|
||||
Count: 135043
|
||||
|
||||
_Note_: RBI backdates the releases. Even though the website says 07 Dec, the change wasn't live on their website till much later.
|
||||
|
||||
The PHP and NPM packages have been updated to 0.2.6 along with the https://ifsc.razorpay.com API
|
||||
|
||||
**Updates**
|
||||
- Usual metadata updates from RBI about new branches
|
||||
|
||||
Here is a cute hedgehog:
|
||||
|
||||
![](https://i.imgur.com/PWs68Kpm.jpg)
|
|
@ -0,0 +1,17 @@
|
|||
0.2.7
|
||||
|
||||
Release Date: 26 Jan 2017
|
||||
RBI Update Date: 24 Jan 2017
|
||||
Count: 135279
|
||||
|
||||
The PHP and NPM packages have been updated to 0.2.7 along with the https://ifsc.razorpay.com API
|
||||
|
||||
**Updates**
|
||||
- Usual metadata updates from RBI about new branches
|
||||
- 2 New Banks have been granted IFSC codes
|
||||
- NVNM (The Navnirman Co-op. Bank Ltd) has been added
|
||||
- TSAB (The Telangana State Cooperative Apex Bank Limited)
|
||||
|
||||
Here is a cute bunny:
|
||||
|
||||
![](https://i.imgur.com/ixXHkFn.jpg)
|
|
@ -0,0 +1,16 @@
|
|||
0.2.8
|
||||
|
||||
Release Date: 10 Feb 2017
|
||||
RBI Update Date: 06 Feb 2017
|
||||
Count: 135461
|
||||
|
||||
The PHP and NPM packages have been updated to 0.2.8 along with the https://ifsc.razorpay.com API
|
||||
|
||||
**Updates**
|
||||
- Usual metadata updates from RBI about new branches
|
||||
- 1 New Bank has been granted IFSC code:
|
||||
- UJVN (Ujjivan Small Finance Bank Limited) has been added)
|
||||
|
||||
Here is a cute ~~bunny~~hamster:
|
||||
|
||||
![](https://i.imgur.com/CiKhpgHm.jpg)
|
|
@ -0,0 +1,238 @@
|
|||
0.2.9
|
||||
|
||||
Release Date: 27 Feb 2017
|
||||
RBI Update Date: 21 Feb 2017
|
||||
Count: 135653
|
||||
|
||||
The PHP and NPM packages have been updated to 0.2.9 along with the https://ifsc.razorpay.com API
|
||||
|
||||
**Updates**
|
||||
- Usual metadata updates from RBI about new branches
|
||||
- 10 IFSC codes have been revoked
|
||||
- 202 new IFSC codes have been given out.
|
||||
|
||||
<summary>
|
||||
|
||||
**Exact IFSC diff:**
|
||||
|
||||
<details>
|
||||
|
||||
``` diff
|
||||
+ANDB0002336
|
||||
+ANDB0003042
|
||||
+ANDB0003046
|
||||
+ANDB0003048
|
||||
+ANDB0003054
|
||||
+ANDB0003091
|
||||
+ANDB0003103
|
||||
+ANDB0003104
|
||||
+APBL0001017
|
||||
+BARB0AJABPU
|
||||
+BARB0BATHAL
|
||||
+BARB0RAIDEH
|
||||
+BARB0RISHRA
|
||||
+BDBL0001814
|
||||
+BDBL0001818
|
||||
+BDBL0001844
|
||||
+BKID0005083
|
||||
+BKID0005260
|
||||
+BKID0005519
|
||||
+BKID0005815
|
||||
+BKID0006281
|
||||
+CBIN0285091
|
||||
+CBIN0285103
|
||||
+CBIN0285121
|
||||
+CIUB0000541
|
||||
+CIUB0000542
|
||||
+CLBL0000071
|
||||
+CLBL0000072
|
||||
+CNRB0006406
|
||||
+CNRB0006445
|
||||
+CNRB0006446
|
||||
+CNRB0006492
|
||||
+CNRB0006493
|
||||
+CNRB0006497
|
||||
+CNRB0006602
|
||||
+DLXB0000163
|
||||
+ESFB0001030
|
||||
+ESFB0001117
|
||||
+ESFB0001118
|
||||
+ESFB0001120
|
||||
+ESFB0003016
|
||||
+ESFB0003017
|
||||
+ESFB0003020
|
||||
+ESFB0004005
|
||||
+ESFB0005001
|
||||
+ESFB0007014
|
||||
+ESFB0007016
|
||||
+ESFB0008001
|
||||
+ESFB0008002
|
||||
+ESFB0008005
|
||||
+ESFB0009003
|
||||
+ESFB0009004
|
||||
+ESFB0014011
|
||||
+ESFB0016011
|
||||
+ESFB0016013
|
||||
+ESFB0016014
|
||||
+ESFB0016019
|
||||
+ESFB0020006
|
||||
+GSCB0UCHAPI
|
||||
+HDFC0004675
|
||||
+HDFC0009166
|
||||
+HDFC0CMFB04
|
||||
+HDFC0CNPCCB
|
||||
+IBKL0087PC1
|
||||
+IBKL0087PC2
|
||||
+IBKL0087PC3
|
||||
+IBKL0087PC4
|
||||
+IBKL0737CU7
|
||||
+IBKL0737CU8
|
||||
+ICIC0003889
|
||||
+ICIC0003935
|
||||
+ICIC0004033
|
||||
+ICIC0004048
|
||||
+ICIC0004073
|
||||
+ICIC0004091
|
||||
+ICIC0004092
|
||||
+ICIC0004126
|
||||
+ICIC0004134
|
||||
+ICIC0004162
|
||||
+ICIC0004179
|
||||
+ICIC0004204
|
||||
+ICIC00ZSBJR
|
||||
+ICIC00ZSBLA
|
||||
+ICIC00ZSBLG
|
||||
+IDIB000K294
|
||||
+INDB0001031
|
||||
+INDB0001033
|
||||
+INDB0001035
|
||||
+INDB0001039
|
||||
+INDB0001040
|
||||
+INDB0001041
|
||||
+INDB0001042
|
||||
+INDB0001050
|
||||
+INDB0001053
|
||||
+INDB0001067
|
||||
+IOBA0002659
|
||||
+KACE0000217
|
||||
+KACE0000218
|
||||
+KARB0000633
|
||||
+KARB0000634
|
||||
+KARB0000787
|
||||
+KCCB0CHH056
|
||||
+KKBK0001784
|
||||
+KKBK0002860
|
||||
+KKBK0003032
|
||||
+KKBK0004100
|
||||
+KKBK0004101
|
||||
+KKBK0004349
|
||||
+KKBK0004350
|
||||
+KKBK0005635
|
||||
+KKBK0005701
|
||||
+KKBK0008312
|
||||
+KVBL0001835
|
||||
+KVBL0004869
|
||||
+KVBL0004870
|
||||
+KVBL0004871
|
||||
+LAVB0000138
|
||||
+LAVB0000139
|
||||
+LAVB0000412
|
||||
+LAVB0000617
|
||||
+LAVB0000963
|
||||
+NTBL0KAS129
|
||||
+NTBL0MOR131
|
||||
+ORBC0102232
|
||||
+ORBC0102233
|
||||
+ORBC0102234
|
||||
+ORBC0102235
|
||||
+PMCB0000251
|
||||
+PUNB0926900
|
||||
+PUNB0930500
|
||||
+PUNB0930600
|
||||
+PUNB0931500
|
||||
+PUNB0932300
|
||||
+PUNB0934600
|
||||
+SBIN0018893
|
||||
+SBIN0018894
|
||||
+SBIN0018898
|
||||
+SBIN0018972
|
||||
+SBIN0018984
|
||||
+SBIN0019126
|
||||
+SIBL0000955
|
||||
+SVCB0001023
|
||||
+SVCB0001024
|
||||
+SVCB0001025
|
||||
+SVCB0001026
|
||||
+SVCB0001027
|
||||
+SVCB0001028
|
||||
+SVCB0027004
|
||||
+SYNB0000708
|
||||
+SYNB0001415
|
||||
+SYNB0001585
|
||||
+SYNB0001586
|
||||
+SYNB0003559
|
||||
+SYNB0006063
|
||||
+SYNB0006409
|
||||
+SYNB0007819
|
||||
+SYNB0009176
|
||||
+SYNB0009493
|
||||
+SYNB0009642
|
||||
+SYNB0009683
|
||||
+SYNB0009949
|
||||
+TMBL0000503
|
||||
+UBIN0577162
|
||||
+UBIN0577332
|
||||
+UBIN0577359
|
||||
+UBIN0577367
|
||||
+UCBA0003343
|
||||
+UTBI0MDWQ38
|
||||
+UTBI0PRVP35
|
||||
+UTBI0SCSM41
|
||||
+UTBI0VESM40
|
||||
+UTBI0WHFP38
|
||||
+UTIB0003275
|
||||
+UTIB0003346
|
||||
+UTIB0003349
|
||||
+UTIB0003410
|
||||
+UTIB0003425
|
||||
+UTIB0NBGKP1
|
||||
+UTIB0SAJPSB
|
||||
+UTIB0SSMCBL
|
||||
+VIJB0AMB001
|
||||
+WBSC0BIRB01
|
||||
+WBSC0BIRB02
|
||||
+WBSC0BIRB03
|
||||
+WBSC0BIRB04
|
||||
+WBSC0BIRB05
|
||||
+WBSC0BIRB06
|
||||
+WBSC0BIRB07
|
||||
+WBSC0BIRB08
|
||||
+WBSC0BIRB09
|
||||
+WBSC0BIRB10
|
||||
+WBSC0BIRB11
|
||||
+WBSC0BIRB12
|
||||
+WBSC0BIRB13
|
||||
+WBSC0BIRB14
|
||||
+WBSC0BIRB18
|
||||
+WBSC0BIRB19
|
||||
+YESB0000932
|
||||
+YESB0AMSB01
|
||||
+YESB0AMSB02
|
||||
+YESB0ICBL01
|
||||
+YESB0WALLET
|
||||
-ALLA0210161
|
||||
-ALLA0211748
|
||||
-ALLA0211773
|
||||
-ALLA0212587
|
||||
-CBIN0283817
|
||||
-CBIN0283871
|
||||
-CBIN0284424
|
||||
-UTBI0BJS176
|
||||
-UTBI0K35IRB
|
||||
-YESB0ALWUCB
|
||||
```
|
||||
</details></summary>
|
||||
|
||||
Here is a cute kitten:
|
||||
|
||||
![](http://placekitten.com/g/400/350)
|
|
@ -0,0 +1,45 @@
|
|||
0.2.10
|
||||
|
||||
## Updates
|
||||
|
||||
- No metadata changes
|
||||
- Adds the new `IFSC\Client` class for lookups on the IFSC API (runnning at ifsc.razorpay.com).
|
||||
|
||||
## Installation
|
||||
|
||||
You will need to have a valid package that provides `php-http/client-implementation`. A complete list of such packages is available at [packagist](https://packagist.org/providers/php-http/client-implementation).
|
||||
|
||||
The tl;dr version of it is:
|
||||
|
||||
`composer require php-http/curl-client guzzlehttp/psr7 php-http/message`
|
||||
|
||||
You can read more about how it works at http://docs.php-http.org/en/latest/httplug/users.html
|
||||
|
||||
## API Documentation
|
||||
|
||||
```php
|
||||
|
||||
use Razorpay\IFSC\Client;
|
||||
|
||||
$client = new Client();
|
||||
$res = $client->lookupIFSC('KKBK0000261');
|
||||
|
||||
echo $res->bank; // 'KOTAK MAHINDRA BANK LIMITED'
|
||||
echo $res->branch; // 'GURGAON'
|
||||
echo $res->address; // 'JMD REGENT SQUARE,MEHRAULI GURGAON ROAD,OPPOSITE BRISTOL HOTEL,'
|
||||
echo $res->contact; // '4131000'
|
||||
echo $res->city; // 'GURGAON'
|
||||
echo $res->district; // 'GURGAON'
|
||||
echo $res->state; // 'HARYANA'
|
||||
echo $res->getBankCode(); // KKBK
|
||||
echo $res->getBankName(); // 'Kotak Mahindra Bank'
|
||||
|
||||
// lookupIFSC may throw `Razorpay\IFSC\Exception\ServerError`
|
||||
// in case of server not responding in time
|
||||
// or Razorpay\IFSC\Exception\InvalidCode in case
|
||||
// the IFSC code is invalid
|
||||
```
|
||||
|
||||
Here is a siamese cat:
|
||||
|
||||
![siamese-468814_640](https://cloud.githubusercontent.com/assets/584253/23647044/c6244582-0339-11e7-8a09-d5e80b0587e7.jpg)
|
|
@ -0,0 +1,323 @@
|
|||
0.2.11
|
||||
|
||||
Release Date: 21 Mar 2017
|
||||
RBI Update Date: 8 Mar 2017
|
||||
Count: 135653
|
||||
|
||||
The PHP and NPM packages have been updated to 0.2.11 along with the https://ifsc.razorpay.com API
|
||||
|
||||
**Updates**
|
||||
- Usual metadata updates from RBI about new branches
|
||||
- 15 IFSC codes have been revoked
|
||||
- 284 new IFSC codes have been given out.
|
||||
- One new Bank has been granted IFSC bank code:
|
||||
`"BARA": "The Baramati Sahakari Bank Ltd"`
|
||||
|
||||
|
||||
<details><summary><strong>Exact IFSC Diff</strong></summary>
|
||||
|
||||
``` diff
|
||||
+APBL0000011
|
||||
+APBL0000012
|
||||
+APBL0000013
|
||||
+APBL0000014
|
||||
+APBL0020049
|
||||
+APBL0020050
|
||||
+APBL0022036
|
||||
+APGB0002200
|
||||
+BARB0BARROA
|
||||
+BARB0IIMLUC
|
||||
+BARB0NALBAR
|
||||
+BARB0UDHAGA
|
||||
+BDBL0001778
|
||||
+BDBL0001801
|
||||
+BDBL0001802
|
||||
+BDBL0001836
|
||||
+BDBL0001839
|
||||
+BKID0005084
|
||||
+BKID0005174
|
||||
+BKID0006759
|
||||
+BKID0008868
|
||||
+BKID0008954
|
||||
+BKID0009477
|
||||
+CBIN0285102
|
||||
+CIUB0000543
|
||||
+CIUB0000544
|
||||
+CIUB0000545
|
||||
+CIUB0000546
|
||||
+CNRB0006313
|
||||
+CNRB0006385
|
||||
+CNRB0006387
|
||||
+CNRB0006388
|
||||
+CNRB0006470
|
||||
+CNRB0006471
|
||||
+CNRB0006486
|
||||
+CNRB0006488
|
||||
+CNRB0006489
|
||||
+CNRB0006490
|
||||
+CNRB0006491
|
||||
+CNRB0006496
|
||||
+CNRB0006499
|
||||
+CNRB0006601
|
||||
+CNRB0006603
|
||||
+CNRB0006619
|
||||
+CNRB0006620
|
||||
+CNRB0006621
|
||||
+CNRB0006624
|
||||
+CNRB0006627
|
||||
+DCBL0000267
|
||||
+DNSB0000039
|
||||
+ESFB0001038
|
||||
+ESFB0001047
|
||||
+ESFB0001048
|
||||
+ESFB0001090
|
||||
+ESFB0001092
|
||||
+ESFB0001101
|
||||
+ESFB0001110
|
||||
+ESFB0001113
|
||||
+ESFB0003013
|
||||
+ESFB0003022
|
||||
+ESFB0003024
|
||||
+ESFB0003028
|
||||
+ESFB0003029
|
||||
+ESFB0003030
|
||||
+ESFB0003031
|
||||
+ESFB0007001
|
||||
+ESFB0007010
|
||||
+ESFB0007011
|
||||
+ESFB0007017
|
||||
+ESFB0008003
|
||||
+ESFB0009006
|
||||
+ESFB0011006
|
||||
+ESFB0014005
|
||||
+ESFB0015005
|
||||
+ESFB0015006
|
||||
+ESFB0020010
|
||||
+FDRL0002287
|
||||
+FDRL0SAWANT
|
||||
+HDFC0004355
|
||||
+HDFC0004665
|
||||
+HDFC0004870
|
||||
+HDFC0009024
|
||||
+HDFC0009129
|
||||
+HDFC0009139
|
||||
+HDFC0009142
|
||||
+HDFC0009143
|
||||
+HDFC0009146
|
||||
+HDFC0009148
|
||||
+HDFC0009152
|
||||
+HDFC0009153
|
||||
+HDFC0009158
|
||||
+HDFC0009161
|
||||
+HDFC0009163
|
||||
+HDFC0009164
|
||||
+HDFC0009169
|
||||
+HDFC0009170
|
||||
+HDFC0009171
|
||||
+HDFC0009173
|
||||
+HDFC0009174
|
||||
+HDFC0009179
|
||||
+HDFC0009180
|
||||
+HDFC0009181
|
||||
+HDFC0009182
|
||||
+HDFC0009183
|
||||
+HDFC0009184
|
||||
+HDFC0009185
|
||||
+HDFC0009187
|
||||
+HDFC0009188
|
||||
+HDFC0009190
|
||||
+HDFC0009191
|
||||
+HDFC0009193
|
||||
+HDFC0009194
|
||||
+HDFC0009195
|
||||
+HDFC0009196
|
||||
+HDFC0009197
|
||||
+HDFC0009198
|
||||
+HDFC0009199
|
||||
+HDFC0009201
|
||||
+HDFC0009202
|
||||
+HDFC0009204
|
||||
+HDFC0009205
|
||||
+HDFC0009206
|
||||
+HDFC0009207
|
||||
+HDFC0009208
|
||||
+HDFC0009209
|
||||
+HDFC0009210
|
||||
+HDFC0009212
|
||||
+HDFC0009213
|
||||
+HDFC0009214
|
||||
+HDFC0009215
|
||||
+HDFC0009217
|
||||
+HDFC0009219
|
||||
+HDFC0009220
|
||||
+HDFC0009221
|
||||
+HDFC0009222
|
||||
+HDFC0009224
|
||||
+HDFC0009227
|
||||
+HDFC0009228
|
||||
+HDFC0009229
|
||||
+HDFC0009232
|
||||
+HDFC0009233
|
||||
+HDFC0009234
|
||||
+HDFC0009238
|
||||
+HDFC0009239
|
||||
+HDFC0009241
|
||||
+HDFC0009243
|
||||
+HDFC0009244
|
||||
+HDFC0009245
|
||||
+HDFC0009246
|
||||
+HDFC0009247
|
||||
+HDFC0009248
|
||||
+HDFC0009249
|
||||
+HDFC0009250
|
||||
+HDFC0009251
|
||||
+HDFC0009258
|
||||
+HDFC0009817
|
||||
+IBKL0002145
|
||||
+IBKL0002158
|
||||
+IBKL0009008
|
||||
+IBKL0341PUB
|
||||
+IBKL0574RDC
|
||||
+ICIC0003956
|
||||
+ICIC0003972
|
||||
+ICIC0003982
|
||||
+ICIC0003996
|
||||
+ICIC0004004
|
||||
+ICIC0004014
|
||||
+ICIC0004020
|
||||
+ICIC0004024
|
||||
+ICIC0004039
|
||||
+ICIC0004042
|
||||
+ICIC0004047
|
||||
+ICIC0004060
|
||||
+ICIC0004095
|
||||
+ICIC0004099
|
||||
+ICIC0004100
|
||||
+ICIC0004105
|
||||
+ICIC0004110
|
||||
+ICIC0004121
|
||||
+ICIC0004128
|
||||
+ICIC0004183
|
||||
+ICIC0004214
|
||||
+ICIC0004238
|
||||
+ICIC0004243
|
||||
+IDIB000A195
|
||||
+IDIB000D090
|
||||
+IDIB000I050
|
||||
+IDIB000I052
|
||||
+IDIB000K297
|
||||
+IDIB000K301
|
||||
+IDIB000R106
|
||||
+IDIB000T195
|
||||
+INDB0001024
|
||||
+INDB0001026
|
||||
+INDB0001028
|
||||
+INDB0001036
|
||||
+INDB0001056
|
||||
+INDB0001057
|
||||
+INDB0001059
|
||||
+INDB0001068
|
||||
+INDB0001070
|
||||
+INDB0001071
|
||||
+INDB0001072
|
||||
+KARB0000356
|
||||
+KARB0000635
|
||||
+KARB0000636
|
||||
+KARB0000960
|
||||
+KCCB0RJT057
|
||||
+KKBK0004102
|
||||
+KKBK0005659
|
||||
+KKBK0007811
|
||||
+KKBK0008226
|
||||
+KKBK0008229
|
||||
+KKBK0008259
|
||||
+KKBK0008291
|
||||
+KKBK0008293
|
||||
+KKBK0008294
|
||||
+KKBK0008782
|
||||
+KKBK0008784
|
||||
+KKBK0ALPYCC
|
||||
+LAVB0000291
|
||||
+LAVB0000327
|
||||
+LAVB0000564
|
||||
+LAVB0000566
|
||||
+LAVB0000568
|
||||
+LAVB0000696
|
||||
+LAVB0000718
|
||||
+LAVB0000961
|
||||
+NTBL0BAL132
|
||||
+ORBC0102236
|
||||
+ORBC0102237
|
||||
+PJSB0000070
|
||||
+PJSB0000071
|
||||
+PJSB0000072
|
||||
+PJSB0000073
|
||||
+PUNB0912400
|
||||
+PUNB0919500
|
||||
+PUNB0927900
|
||||
+PUNB0931000
|
||||
+PUNB0931400
|
||||
+PUNB0932000
|
||||
+PUNB0938500
|
||||
+PUNB0947700
|
||||
+SIBL0000941
|
||||
+SYNB0001010
|
||||
+SYNB0003294
|
||||
+SYNB0006226
|
||||
+SYNB0006470
|
||||
+SYNB0006471
|
||||
+SYNB0007889
|
||||
+SYNB0008352
|
||||
+SYNB0008397
|
||||
+SYNB0009467
|
||||
+UJVN0001105
|
||||
+UJVN0001108
|
||||
+UJVN0001112
|
||||
+UJVN0001114
|
||||
+UJVN0001120
|
||||
+UJVN0001122
|
||||
+UJVN0001150
|
||||
+UJVN0001651
|
||||
+UJVN0001665
|
||||
+UJVN0099999
|
||||
+UTBI0CNMR54
|
||||
+UTBI0GBWP40
|
||||
+UTBI0GRUR55
|
||||
+UTBI0GVRP42
|
||||
+UTBI0JDMP44
|
||||
+UTBI0MGLP41
|
||||
+UTBI0MRWP43
|
||||
+UTBI0SGAL55
|
||||
+UTBI0SIEL56
|
||||
+UTBI0VSPP39
|
||||
+UTIB0003358
|
||||
+UTIB0003398
|
||||
+UTIB0003417
|
||||
+UTIB0003427
|
||||
+UTIB0003437
|
||||
+UTIB0SLUCBG
|
||||
+UTIB0SSSVSB
|
||||
+YESB0000976
|
||||
+YESB0000983
|
||||
+YESB0000992
|
||||
+YESB0000998
|
||||
-CBIN0282414
|
||||
-CBIN0283181
|
||||
-CBIN0283818
|
||||
-CBIN0283864
|
||||
-CBIN0283870
|
||||
-CBIN0284121
|
||||
-CBIN0284460
|
||||
-CBIN0284542
|
||||
-CBIN0284573
|
||||
-CBIN0284577
|
||||
-CBIN0284581
|
||||
-CBIN0284597
|
||||
-CBIN0284612
|
||||
-CBIN0284646
|
||||
-DCBL0000272
|
||||
```
|
||||
</details>
|
||||
Here is a cute kitten:
|
||||
|
||||
![](http://placekitten.com/g/450/350)
|