diff --git a/base64url/tweakdefs4.base64url b/base64url/tweakdefs4.base64url index b235b61..d12fcdd 100644 --- a/base64url/tweakdefs4.base64url +++ b/base64url/tweakdefs4.base64url @@ -1 +1 @@ -LS0gUmFwdG9yIEJ1aWxkIDEuMSBTa3JpcA0KLS0gQ29uc3RydWN0b3JzIGNhbiBiZSBidWlsdCBmcm9tIHRoZSB0MSBmYWN0b3JpZXMNCi0tIFRvZ2dsZSB0byBhbGxvdyBjb21tYW5kZXJzIHRvIGJ1aWxkIHJhcHRvciBidWlsZGluZ3MuDQpsb2NhbCBhPWZhbHNlO2xvY2FsIGI9VW5pdERlZnMgb3J7fWxvY2FsIGM9e2FybT17J2FybWFjYScsJ2FybWFjaycsJ2FybWFjdicsJ2FybWNvbSd9LGNvcj17J2NvcmFjYScsJ2NvcmFjaycsJ2NvcmFjdicsJ2NvcmNvbSd9LGxlZz17J2xlZ2FjYScsJ2xlZ2FjaycsJ2xlZ2FjdicsJ2xlZ2NvbSd9fWZ1bmN0aW9uIGFkZEJ1aWxkaW5nVG9GYWN0aW9uKGQsZSxmKWxvY2FsIGc9e31pZiBlIGFuZCBjW2VddGhlbiBnW2VdPWNbZV1lbHNlIGc9YyBlbmQ7Zm9yIGgsaSBpbiBwYWlycyhnKWRvIGZvciBoLGogaW4gaXBhaXJzKGkpZG8gbG9jYWwgaz1qOm1hdGNoKCdjb20kJylpZihhIG9yIG5vdCBrKWFuZCBiW2pddGhlbiBiW2pdLmJ1aWxkb3B0aW9ucz1iW2pdLmJ1aWxkb3B0aW9ucyBvcnt9dGFibGUuaW5zZXJ0KGJbal0uYnVpbGRvcHRpb25zLGQpU3ByaW5nLkVjaG8oJ0FkZGVkICcuLmQuLicgdG8gJy4uaillbmQ7aWYgYSBhbmQgayB0aGVuIGZvciBsPTIsMTAgZG8gbG9jYWwgbT1qLi4nbHZsJy4ubDtpZiBiW21ddGhlbiBiW21dLmJ1aWxkb3B0aW9ucz1iW21dLmJ1aWxkb3B0aW9ucyBvcnt9dGFibGUuaW5zZXJ0KGJbbV0uYnVpbGRvcHRpb25zLGQpU3ByaW5nLkVjaG8oJ0FkZGVkICcuLmQuLicgdG8gJy4ubSllbmQgZW5kIGVuZCBlbmQgZW5kO2lmIGYgYW5kIGJbZF10aGVuIGJbZF0uY3VzdG9tcGFyYW1zPWJbZF0uY3VzdG9tcGFyYW1zIG9ye31iW2RdLmN1c3RvbXBhcmFtcy51bml0Z3JvdXA9ZjtTcHJpbmcuRWNobygnU2V0IHVuaXRncm91cCBmb3IgJy4uZC4uJyB0byAnLi5mKWVuZCBlbmQ7ZnVuY3Rpb24gY2xvbmVVbml0KG4sbyxwLHEpaWYgYltuXWFuZCBub3QgYltvXXRoZW4gbG9jYWwgcj10YWJsZS5jb3B5KGJbbl0pYltvXT1yO2xvY2FsIHM9YltvXXMudW5pdG5hbWU9bztzLmJ1aWxkb3B0aW9ucz17fXMuY3VzdG9tcGFyYW1zPXMuY3VzdG9tcGFyYW1zIG9ye31zLmN1c3RvbXBhcmFtcy5pMThuX2VuX2h1bWFubmFtZT1wO3MuY3VzdG9tcGFyYW1zLmkxOG5fZW5fdG9vbHRpcD1xO3MuY3VzdG9tcGFyYW1zLnVuaXRncm91cD0nYnVpbGRlcidzLmJ1aWxkcGljPXMuYnVpbGRwaWMgb3InZmFjdG9yeS5kZHMnU3ByaW5nLkVjaG8oJ0Nsb25lZDogJy4uby4uJyBmcm9tICcuLm4pZW5kIGVuZDtmdW5jdGlvbiBzZWxlY3RCZXN0VW5pdHModCx1LHYpbG9jYWwgdz17fWZvciB4LGggaW4gcGFpcnMoYilkbyBmb3IgaCx5IGluIGlwYWlycyh0KWRvIGlmIHg6bWF0Y2goJ14nLi55KXRoZW4gbG9jYWwgej1iW3hdLm1ldGFsY29zdDtsb2NhbCBBPXRydWU7aWYgdSBhbmQgdiB0aGVuIGlmIHY9PSc-J3RoZW4gQT16PnUgZWxzZWlmIHY9PSc8J3RoZW4gQT16PHUgZW5kIGVuZDtpZiBBIHRoZW4gbG9jYWwgQixDPXg6bWF0Y2goJ14oLi0pX3YoJWQrKSQnKWlmIEIgYW5kIEMgdGhlbiBDPXRvbnVtYmVyKEMpaWYgbm90IHdbQl1vciBDPndbQl0udmVyc2lvbiB0aGVuIHdbQl09e25hbWU9eCx2ZXJzaW9uPUN9ZW5kIGVsc2UgaWYgbm90IHdbeF10aGVuIHdbeF09e25hbWU9eCx2ZXJzaW9uPTB9ZW5kIGVuZCBlbmQgZW5kIGVuZCBlbmQ7cmV0dXJuIHcgZW5kO2Z1bmN0aW9uIHNlbGVjdFVuaXRzKHQpbG9jYWwgRD17fWZvciB4LGggaW4gcGFpcnMoYilkbyBmb3IgaCx5IGluIGlwYWlycyh0KWRvIGlmIHg6bWF0Y2goJ14nLi55KXRoZW4gaWYgbm90IERbeF10aGVuIERbeF09e25hbWU9eH1lbmQgZW5kIGVuZCBlbmQ7cmV0dXJuIEQgZW5kO2Z1bmN0aW9uIGFkZFVuaXRzVG9CdWlsZGluZyhFLEYsZilpZiBub3QgYltFXXRoZW4gcmV0dXJuIGVuZDtiW0VdLmJ1aWxkb3B0aW9ucz1iW0VdLmJ1aWxkb3B0aW9ucyBvcnt9aWYgdHlwZShGKT09J3RhYmxlJ3RoZW4gZm9yIGgsRyBpbiBwYWlycyhGKWRvIGxvY2FsIHg9Ry5uYW1lIG9yIEc7dGFibGUuaW5zZXJ0KGJbRV0uYnVpbGRvcHRpb25zLHgpU3ByaW5nLkVjaG8oJ0FkZGVkICcuLnguLicgdG8gJy4uRSlpZiBmIGFuZCBiW3hddGhlbiBiW3hdLmN1c3RvbXBhcmFtcz1iW3hdLmN1c3RvbXBhcmFtcyBvcnt9Ylt4XS5jdXN0b21wYXJhbXMudW5pdGdyb3VwPWY7U3ByaW5nLkVjaG8oJ1NldCB1bml0Z3JvdXAgZm9yICcuLnguLicgdG8gJy4uZillbmQgZW5kIGVsc2VpZiB0eXBlKEYpPT0nc3RyaW5nJ3RoZW4gdGFibGUuaW5zZXJ0KGJbRV0uYnVpbGRvcHRpb25zLEYpU3ByaW5nLkVjaG8oJ0FkZGVkICcuLkYuLicgdG8gJy4uRSllbmQgZW5kO2lmIGJbJ3JhcHRvcl90dXJyZXRfYmFzaWNfdDRfdjEnXWFuZCBiWydyYXB0b3JfdHVycmV0X2J1cnJvd190Ml92MSdddGhlbiBsb2NhbCBzPWJbJ3JhcHRvcl90dXJyZXRfYnVycm93X3QyX3YxJ11zLmJ1aWxkcGljPSdyYXB0b3JzL3JhcHRvcl90dXJyZXRzLkREUydzLm1ldGFsY29zdD1iWydyYXB0b3JfdHVycmV0X2Jhc2ljX3Q0X3YxJ10ubWV0YWxjb3N0KjIgb3IgMTYwMDtzLmVuZXJneWNvc3Q9YlsncmFwdG9yX3R1cnJldF9iYXNpY190NF92MSddLmVuZXJneWNvc3QqMiBvciAxNjAwIGVuZDtjbG9uZVVuaXQoJ2xlZ3ZwJywnc2tfcmFwdG9yaGF0Y2hlcnlfdDEnLCdSYXB0b3IgSGF0Y2hlcnknLCdTcGVjaWFsaXplZCBmYWN0b3J5IGZvciBsYW5kLWJhc2VkIFJhcHRvciB1bml0cycpbG9jYWwgSD1zZWxlY3RCZXN0VW5pdHMoeydyYXB0b3JfbGFuZF8nfSw5OTksJzwnKWFkZFVuaXRzVG9CdWlsZGluZygnc2tfcmFwdG9yaGF0Y2hlcnlfdDEnLEgpY2xvbmVVbml0KCdsZWdnYW50Jywnc2tfcmFwdG9yaGF0Y2hlcnlfdDInLCdHaWFudCBSYXB0b3IgSGF0Y2hlcnknLCdTcGVjaWFsaXplZCBmYWN0b3J5IGZvciBsYW5kLWJhc2VkIFJhcHRvciB1bml0cycpbG9jYWwgSD1zZWxlY3RCZXN0VW5pdHMoeydyYXB0b3JfbGFuZF8nLCdyYXB0b3JfYWxsdGVycmFpbl8nLCdyYXB0b3JfbWF0cmlhcmNoXycsJ3JhcHRvcl9xdWVlbl8nfSwxMDAwLCc-JylhZGRVbml0c1RvQnVpbGRpbmcoJ3NrX3JhcHRvcmhhdGNoZXJ5X3QyJyxIKWNsb25lVW5pdCgnbGVnYWFwJywnc2tfcmFwdG9yYWlyaGF0Y2hlcnknLCdSYXB0b3IgQWlyIEhhdGNoZXJ5JywnU3BlY2lhbGl6ZWQgZmFjdG9yeSBmb3IgYWlyLWJhc2VkIFJhcHRvciB1bml0cycpbG9jYWwgST1zZWxlY3RCZXN0VW5pdHMoeydyYXB0b3JfYWlyXyd9KWFkZFVuaXRzVG9CdWlsZGluZygnc2tfcmFwdG9yYWlyaGF0Y2hlcnknLEkpY2xvbmVVbml0KCdhcm1hY3YnLCdza19yYXB0b3JidWlsZGVyJywnUmFwdG9yIENvbnN0cnVjdGlvbiBWZWhpY2xlJywnQnVpbGRzIFJhcHRvciBIYXRjaGVyaWVzJylpZiBiWydza19yYXB0b3JidWlsZGVyJ110aGVuIGxvY2FsIHM9Ylsnc2tfcmFwdG9yYnVpbGRlciddcy5idWlsZHBpYz0ncmFwdG9ycy9yYXB0b3IxZC5ERFMncy5jdXN0b21wYXJhbXMudGVjaGxldmVsPTI7cy5jdXN0b21wYXJhbXMudW5pdGdyb3VwPSdidWlsZGVyJ3MuYnVpbGRvcHRpb25zPXt9cy5idWlsZG9wdGlvbnM9eydza19yYXB0b3JoYXRjaGVyeV90MScsJ3NrX3JhcHRvcmhhdGNoZXJ5X3QyJ31lbmQ7YWRkVW5pdHNUb0J1aWxkaW5nKCdza19yYXB0b3JidWlsZGVyJyxzZWxlY3RCZXN0VW5pdHMoeydyYXB0b3JfdHVycmV0Xyd9KSwnd2VhcG9uJylhZGRVbml0c1RvQnVpbGRpbmcoJ2FybXZwJywnc2tfcmFwdG9yYnVpbGRlcicpYWRkVW5pdHNUb0J1aWxkaW5nKCdhcm1sYWInLCdza19yYXB0b3JidWlsZGVyJyljbG9uZVVuaXQoJ2FybWFjYScsJ3NrX3JhcHRvcmFpcmJ1aWxkZXInLCdSYXB0b3IgQWlyIENvbnN0cnVjdGlvbiBWZWhpY2xlJywnQnVpbGRzIFJhcHRvciBBaXIgSGF0Y2hlcmllcycpaWYgYlsnc2tfcmFwdG9yYWlyYnVpbGRlcidddGhlbiBsb2NhbCBzPWJbJ3NrX3JhcHRvcmFpcmJ1aWxkZXInXXMuYnVpbGRwaWM9J3JhcHRvcnMvcmFwdG9yYWlyc2NvdXQuRERTJ3MuY3VzdG9tcGFyYW1zLnRlY2hsZXZlbD0yO3MuY3VzdG9tcGFyYW1zLnVuaXRncm91cD0nYnVpbGRlcidzLmJ1aWxkb3B0aW9ucz17fXMuYnVpbGRvcHRpb25zPXsnc2tfcmFwdG9yYWlyaGF0Y2hlcnknfWVuZDthZGRVbml0c1RvQnVpbGRpbmcoJ3NrX3JhcHRvcmFpcmJ1aWxkZXInLHNlbGVjdEJlc3RVbml0cyh7J3JhcHRvcl90dXJyZXRfJ30pLCd3ZWFwb24nKWFkZFVuaXRzVG9CdWlsZGluZygnYXJtYXAnLCdza19yYXB0b3JhaXJidWlsZGVyJylhZGRVbml0c1RvQnVpbGRpbmcoJ2NvcnZwJywnc2tfcmFwdG9yYnVpbGRlcicpYWRkVW5pdHNUb0J1aWxkaW5nKCdjb3JsYWInLCdza19yYXB0b3JidWlsZGVyJylhZGRVbml0c1RvQnVpbGRpbmcoJ2xlZ3ZwJywnc2tfcmFwdG9yYnVpbGRlcicpYWRkVW5pdHNUb0J1aWxkaW5nKCdsZWdsYWInLCdza19yYXB0b3JidWlsZGVyJylhZGRVbml0c1RvQnVpbGRpbmcoJ2NvcmFwJywnc2tfcmFwdG9yYWlyYnVpbGRlcicpYWRkVW5pdHNUb0J1aWxkaW5nKCdsZWdhcCcsJ3NrX3JhcHRvcmFpcmJ1aWxkZXInKQ \ No newline at end of file +LS1NaW5pLUJvc3Nlcw0KLS0gQXV0aG9yczogUkNvcmUNCi0tIGRvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC8xUVNWc3VBQU1oQnJoaVpkVGloVmZTQ3dQemJiWldETEN0WFdQMjNDVTBrbw0KbG9jYWwgYSxiLGMsZCxlPVVuaXREZWZzIG9ye30sdGFibGUubWVyZ2UsdGFibGUuY29weSwncmFwdG9yX21hdHJpYXJjaF9iYXNpYycsJ2N1c3RvbWZ1c2lvbmV4cGxvJ2xvY2FsIGZ1bmN0aW9uIGYoZyxoLGkpaWYgYVtnXWFuZCBub3QgYVtoXXRoZW4gYVtoXT1iKGFbZ10saSBvcnt9KWVuZCBlbmQ7bG9jYWwgaj1hW2RdLmhlYWx0aDtmKCdyYXB0b3JfcXVlZW5fdmVyeWVhc3knLCdyYXB0b3JfbWluaXFfYScse25hbWU9J1F1ZWVubGluZyBQcmltYScsaWNvbnR5cGU9J3JhcHRvcl9xdWVlbl92ZXJ5ZWFzeScsaGVhbHRoPWoqNSxjdXN0b21wYXJhbXM9e2kxOG5fZW5faHVtYW5uYW1lPSdRdWVlbmxpbmcgUHJpbWEnLGkxOG5fZW5fdG9vbHRpcD0nTWFqZXN0aWMgYW5kIGJvbGQsIHJ1bGVyIG9mIHRoZSBodW50Lid9fSlmKCdyYXB0b3JfcXVlZW5fZWFzeScsJ3JhcHRvcl9taW5pcV9iJyx7bmFtZT0nUXVlZW5saW5nIFNlY3VuZGEnLGljb250eXBlPSdyYXB0b3JfcXVlZW5fZWFzeScsaGVhbHRoPWoqNyxjdXN0b21wYXJhbXM9e2kxOG5fZW5faHVtYW5uYW1lPSdRdWVlbmxpbmcgU2VjdW5kYScsaTE4bl9lbl90b29sdGlwPSdTd2lmdCBhbmQgc2hhcnAsIGEgbm9ibGUgYW1vbmcgcmFwdG9ycy4nfX0pZigncmFwdG9yX3F1ZWVuX25vcm1hbCcsJ3JhcHRvcl9taW5pcV9jJyx7bmFtZT0nUXVlZW5saW5nIFRlcnRpYScsaWNvbnR5cGU9J3JhcHRvcl9xdWVlbl9ub3JtYWwnLGhlYWx0aD1qKjksY3VzdG9tcGFyYW1zPXtpMThuX2VuX2h1bWFubmFtZT0nUXVlZW5saW5nIFRlcnRpYScsaTE4bl9lbl90b29sdGlwPSdSZWZpbmVkIHRhc3Rlcy4gTGlrZXMgaGVyIHByZXkgcmFyZS4nfX0pZm9yIGssbCBpbiBpcGFpcnN7eydyYXB0b3JfbWF0cmlhcmNoX2Jhc2ljJywncmFwdG9yX21hbWFfYmEnLCdNYXRyb25hJywnQ2xhd3MgY2hhcmdlZCB3aXRoIHZlbmdlYW5jZS4nfSx7J3JhcHRvcl9tYXRyaWFyY2hfZmlyZScsJ3JhcHRvcl9tYW1hX2ZpJywnUHlybyBNYXRyb25hJywnQSBmaXJlc3Rvcm0gb2YgbWF0ZXJuYWwgd3JhdGguJ30seydyYXB0b3JfbWF0cmlhcmNoX2VsZWN0cmljJywncmFwdG9yX21hbWFfZWwnLCdQYXJhbHl6aW5nIE1hdHJvbmEnLCdDcmFja2xpbmcgd2l0aCByYWdlLCByZWFkeSB0byBzdHJpa2UuJ30seydyYXB0b3JfbWF0cmlhcmNoX2FjaWQnLCdyYXB0b3JfbWFtYV9hYycsJ0FjaWQgTWF0cm9uYScsJ0FjaWQtZnVlbGVkLCBtZWx0aW5nIGV2ZXJ5dGhpbmcgaW4gc2lnaHQuJ319ZG8gZihsWzFdLGxbMl0se25hbWU9bFszXSxpY29udHlwZT1sWzFdLGhlYWx0aD1qKjEuNSxjdXN0b21wYXJhbXM9e2kxOG5fZW5faHVtYW5uYW1lPWxbM10saTE4bl9lbl90b29sdGlwPWxbNF19fSllbmQ7ZignY3JpdHRlcl9wZW5ndWlua2luZycsJ3JhcHRvcl9jb25zb3J0Jyx7bmFtZT0nUmFwdG9yIENvbnNvcnQnLGljb250eXBlPSdjb3Jrb3JnJyxoZWFsdGg9aio0LG1hc3M9MTAwMDAwLHNvbmFyc3RlYWx0aD1mYWxzZSxzdGVhbHRoPWZhbHNlLHNwZWVkPTY3LjUsY3VzdG9tcGFyYW1zPXtpMThuX2VuX2h1bWFubmFtZT0nUmFwdG9yIENvbnNvcnQnLGkxOG5fZW5fdG9vbHRpcD0nU25lYWt5IHBvd2VyZnVsIGxpdHRsZSB0ZXJyb3IuJ319KWEucmFwdG9yX2NvbnNvcnQud2VhcG9uZGVmcy5tZWxlZT1jKGFbZF0ud2VhcG9uZGVmcy5tZWxlZSlsb2NhbCBmdW5jdGlvbiBtKG4sbyxwLHEscixzKXJldHVybntyYXB0b3JjdXN0b21zcXVhZD10cnVlLHJhcHRvcnNxdWFkdW5pdHNhbW91bnQ9ciBvciAxLHJhcHRvcnNxdWFkbWluYW5nZXI9bixyYXB0b3JzcXVhZG1heGFuZ2VyPW8scmFwdG9yc3F1YWR3ZWlnaHQ9cyBvciAxLHJhcHRvcnNxdWFkcmFyaXR5PXEgb3InYmFzaWMnLHJhcHRvcnNxdWFkYmVoYXZpb3I9cCxyYXB0b3JzcXVhZGJlaGF2aW9yZGlzdGFuY2U9NTAwLHJhcHRvcnNxdWFkYmVoYXZpb3JjaGFuY2U9MC43NX1lbmQ7bG9jYWwgdD17c2VsZmRlc3RydWN0YXM9ZSxleHBsb2RlYXM9ZSxtYXh0aGlzdW5pdD00LHdlYXBvbmRlZnM9e3llbGxvd19taXNzaWxlPXtkYW1hZ2U9e2RlZmF1bHQ9MSx2dG9sPTEwMDB9fX19Zm9yIHUsdiBpbiBwYWlyc3tjb3Jjb21sdmw0PXt3ZWFwb25kZWZzPXtkaXNpbnRlZ3JhdG9yeGw9e2RhbWFnZT17Y29tbWFuZGVycz0wLGRlZmF1bHQ9OTk5OTksc2NhdmJvc3M9MTAwMCxyYXB0b3JxdWVlbj0yMDAwMH19fX0scmFwdG9yX21pbmlxX2E9Yih0LHtjdXN0b21wYXJhbXM9bSg3MCw4MCwnYmVyc2VyaycpLHdlYXBvbmRlZnM9e2dvbz17ZGFtYWdlPXtkZWZhdWx0PTc1MH19LG1lbGVlPXtkYW1hZ2U9e2RlZmF1bHQ9NDAwMH19fX0pLHJhcHRvcl9taW5pcV9iPWIodCx7Y3VzdG9tcGFyYW1zPW0oODUsOTUsJ2JlcnNlcmsnKSx3ZWFwb25kZWZzPXtnb289e2RhbWFnZT17ZGVmYXVsdD0xNTAwfX0sbWVsZWU9e2RhbWFnZT17ZGVmYXVsdD03MDAwfX19fSkscmFwdG9yX21pbmlxX2M9Yih0LHtjdXN0b21wYXJhbXM9bSgxMDAsMTI1LCdiZXJzZXJrJyksd2VhcG9uZGVmcz17Z29vPXtkYW1hZ2U9e2RlZmF1bHQ9MzAwMH19LG1lbGVlPXtkYW1hZ2U9e2RlZmF1bHQ9MTAwMDB9fX19KSxyYXB0b3JfY29uc29ydD17ZXhwbG9kZWFzPSdyYXB0b3JfZW1wZGVhdGhfYmlnJyxtYXh0aGlzdW5pdD04LGN1c3RvbXBhcmFtcz1tKDg1LDEwMDAsJ2JlcnNlcmsnKSx3ZWFwb25kZWZzPXtleWVsYXNlcj17cmFuZ2U9ODAwLHJlbG9hZHRpbWU9MixkYW1hZ2U9e2NvbW1hbmRlcnM9NjAwMCxkZWZhdWx0PTYwMDB9fSxtZWxlZT17bmFtZT0nUm95YWwgQmVhayBBdHRhY2snLHJhbmdlPTMwMCxzb3VuZHN0YXJ0PSdwZW5zcXVhd2sxJyxkYW1hZ2U9e2RlZmF1bHQ9MTAwMH19fSx3ZWFwb25zPXtbMl09e2RlZj0nbWVsZWUnLG1haW5kaXI9JzAgMCAxJyxtYXhhbmdsZWRpZj0xNTV9fX0scmFwdG9yX21hbWFfYmE9e21heHRoaXN1bml0PTQsY3VzdG9tcGFyYW1zPW0oNTUsODQsJ2JlcnNlcmsnKSx3ZWFwb25kZWZzPXtnb289e2RhbWFnZT17ZGVmYXVsdD03NTB9fSxtZWxlZT17ZGFtYWdlPXtkZWZhdWx0PTc1MH19fX0scmFwdG9yX21hbWFfZmk9e2V4cGxvZGVhcz0ncmFwdG9yX2VtcGRlYXRoX2JpZycsbWF4dGhpc3VuaXQ9NCxjdXN0b21wYXJhbXM9bSg1NSw4NCwnYmVyc2VyaycpLHdlYXBvbmRlZnM9e2ZsYW1ldGhyb3dlcnNwaWtlPXtkYW1hZ2U9e2RlZmF1bHQ9MTIwfX0sZmxhbWV0aHJvd2VybWFpbj17ZGFtYWdlPXtkZWZhdWx0PTI0MH19fX0scmFwdG9yX21hbWFfZWw9e21heHRoaXN1bml0PTQsY3VzdG9tcGFyYW1zPW0oNjAsMTAwMCwnYmVyc2VyaycpfSxyYXB0b3JfbWFtYV9hYz17bWF4dGhpc3VuaXQ9NCxjdXN0b21wYXJhbXM9bSg2NSwxMDAwLCdiZXJzZXJrJyksd2VhcG9uZGVmcz17bWVsZWU9e2RhbWFnZT17ZGVmYXVsdD03NTB9fX19LHJhcHRvcl9sYW5kX2Fzc2F1bHRfYmFzaWNfdDRfdjI9e21heHRoaXN1bml0PTgsY3VzdG9tcGFyYW1zPW0oMzMsNTAsJ3JhaWRlcicpfSxyYXB0b3JfbGFuZF9hc3NhdWx0X2Jhc2ljX3Q0X3YxPXttYXh0aGlzdW5pdD0xNixjdXN0b21wYXJhbXM9bSg1MSw2OSwncmFpZGVyJywnYmFzaWMnLDIpfX1kbyBhW3VdPWFbdV1vcnt9dGFibGUubWVyZ2VJblBsYWNlKGFbdV0sdix0cnVlKWVuZA \ No newline at end of file diff --git a/lua/tweakdefs4.lua b/lua/tweakdefs4.lua index ca175d7..54b51bd 100644 --- a/lua/tweakdefs4.lua +++ b/lua/tweakdefs4.lua @@ -1,100 +1,122 @@ --- Mini-Bosses -local a = UnitDefs or {} -local b = table.merge -local c = "raptor_matriarch_basic" +--Mini-Bosses +-- Authors: RCore +-- docs.google.com/spreadsheets/d/1QSVsuAAMhBrhiZdTihVfSCwPzbbZWDLCtXWP23CU0ko +local unitDefs, tableMerge, tableCopy, raptor_matriarch_basic, customfusionexplo = UnitDefs or {}, table.merge, table.copy, 'raptor_matriarch_basic', 'customfusionexplo' -local function d(e, f, g) - if a[e] and not a[f] then - a[f] = b(a[e], g or {}) +local function newUnit(old, new, data) + if unitDefs[old] and not unitDefs[new] then + unitDefs[new] = tableMerge(unitDefs[old], data or {}) end end -local function h(i) - if type(i) ~= "table" then return i end - local j = {} - for k, l in pairs(i) do j[h(k)] = h(l) end - return setmetatable(j, h(getmetatable(i))) -end - -local m = a[c].health +local raptor_matriarch_basic_health = unitDefs[raptor_matriarch_basic].health -d("raptor_queen_veryeasy", "raptor_miniq_a", { - name = "Queenling Prima", - icontype = "raptor_queen_veryeasy", - health = m * 5, - customparams = { - i18n_en_humanname = "Queenling Prima", - i18n_en_tooltip = "Majestic and bold, ruler of the hunt." +newUnit( + 'raptor_queen_veryeasy', + 'raptor_miniq_a', + { + name = 'Queenling Prima', + icontype = 'raptor_queen_veryeasy', + health = raptor_matriarch_basic_health * 5, + customparams = { + i18n_en_humanname = 'Queenling Prima', + i18n_en_tooltip = 'Majestic and bold, ruler of the hunt.' + } } -}) +) -d("raptor_queen_easy", "raptor_miniq_b", { - name = "Queenling Secunda", - icontype = "raptor_queen_easy", - health = m * 7, - customparams = { - i18n_en_humanname = "Queenling Secunda", - i18n_en_tooltip = "Swift and sharp, a noble among raptors." +newUnit( + 'raptor_queen_easy', + 'raptor_miniq_b', + { + name = 'Queenling Secunda', + icontype = 'raptor_queen_easy', + health = raptor_matriarch_basic_health * 7, + customparams = { + i18n_en_humanname = 'Queenling Secunda', + i18n_en_tooltip = 'Swift and sharp, a noble among raptors.' + } } -}) +) -d("raptor_queen_normal", "raptor_miniq_c", { - name = "Queenling Tertia", - icontype = "raptor_queen_normal", - health = m * 9, - customparams = { - i18n_en_humanname = "Queenling Tertia", - i18n_en_tooltip = "Refined tastes. Likes her prey rare." +newUnit( + 'raptor_queen_normal', + 'raptor_miniq_c', + { + name = 'Queenling Tertia', + icontype = 'raptor_queen_normal', + health = raptor_matriarch_basic_health * 9, + customparams = { + i18n_en_humanname = 'Queenling Tertia', + i18n_en_tooltip = 'Refined tastes. Likes her prey rare.' + } } -}) +) -for n, l in ipairs { - { "raptor_matriarch_basic", "raptor_mama_ba", "Matrona", "Claws charged with vengeance." }, - { "raptor_matriarch_fire", "raptor_mama_fi", "Pyro Matrona", "A firestorm of maternal wrath." }, - { "raptor_matriarch_electric", "raptor_mama_el", "Paralyzing Matrona", "Crackling with rage, ready to strike." }, - { "raptor_matriarch_acid", "raptor_mama_ac", "Acid Matrona", "Acid-fueled, melting everything in sight." } +for _, l in ipairs { + { 'raptor_matriarch_basic', 'raptor_mama_ba', 'Matrona', 'Claws charged with vengeance.' }, + { 'raptor_matriarch_fire', 'raptor_mama_fi', 'Pyro Matrona', 'A firestorm of maternal wrath.' }, + { 'raptor_matriarch_electric', 'raptor_mama_el', 'Paralyzing Matrona', 'Crackling with rage, ready to strike.' }, + { 'raptor_matriarch_acid', 'raptor_mama_ac', 'Acid Matrona', 'Acid-fueled, melting everything in sight.' } } do - d(l[1], l[2], { - name = l[3], - icontype = l[1], - health = m * 1.5, - customparams = { - i18n_en_humanname = l[3], - i18n_en_tooltip = l[4] + newUnit( + l[1], + l[2], + { + name = l[3], + icontype = l[1], + health = raptor_matriarch_basic_health * 1.5, + customparams = { + i18n_en_humanname = l[3], + i18n_en_tooltip = l[4] + } } - }) + ) end -d("critter_penguinking", "raptor_consort", { - name = "Raptor Consort", - icontype = "corkorg", - health = m * 4, - mass = 100000, - sonarstealth = false, - stealth = false, - speed = 67.5, - customparams = { - i18n_en_humanname = "Raptor Consort", - i18n_en_tooltip = "Sneaky powerful little terror." +newUnit( + 'critter_penguinking', + 'raptor_consort', + { + name = 'Raptor Consort', + icontype = 'corkorg', + health = raptor_matriarch_basic_health * 4, + mass = 100000, + sonarstealth = false, + stealth = false, + speed = 67.5, + customparams = { + i18n_en_humanname = 'Raptor Consort', + i18n_en_tooltip = 'Sneaky powerful little terror.' + } } -}) +) -a.raptor_consort.weapondefs.melee = h(a[c].weapondefs.melee) +unitDefs.raptor_consort.weapondefs.melee = tableCopy(unitDefs[raptor_matriarch_basic].weapondefs.melee) -local o = function(p, q, e, r, s, t) +local function raptorSquad(p, q, e, r, s, t) return { raptorcustomsquad = true, raptorsquadunitsamount = s or 1, raptorsquadminanger = p, raptorsquadmaxanger = q, raptorsquadweight = t or 1, - raptorsquadrarity = r or "basic", + raptorsquadrarity = r or 'basic', raptorsquadbehavior = e, raptorsquadbehaviordistance = 500, raptorsquadbehaviorchance = 0.75 } end +local miniQueenCommon = { + selfdestructas = customfusionexplo, + explodeas = customfusionexplo, + maxthisunit = 4, + weapondefs = { + yellow_missile = { damage = { default = 1, vtol = 1000 } } + } +} + for f, u in pairs { corcomlvl4 = { weapondefs = { @@ -108,43 +130,31 @@ for f, u in pairs { } } }, - raptor_miniq_a = { - selfdestructas = "customfusionexplo", - explodeas = "customfusionexplo", - maxthisunit = 4, - customparams = o(70, 80, "berserk"), + raptor_miniq_a = tableMerge(miniQueenCommon, { + customparams = raptorSquad(70, 80, 'berserk'), weapondefs = { goo = { damage = { default = 750 } }, melee = { damage = { default = 4000 } }, - yellow_missile = { damage = { default = 1, vtol = 1000 } } } - }, - raptor_miniq_b = { - selfdestructas = "customfusionexplo", - explodeas = "customfusionexplo", - maxthisunit = 4, - customparams = o(85, 95, "berserk"), + }), + raptor_miniq_b = tableMerge(miniQueenCommon, { + customparams = raptorSquad(85, 95, 'berserk'), weapondefs = { goo = { damage = { default = 1500 } }, melee = { damage = { default = 7000 } }, - yellow_missile = { damage = { default = 1, vtol = 1000 } } } - }, - raptor_miniq_c = { - selfdestructas = "customfusionexplo", - explodeas = "customfusionexplo", - maxthisunit = 4, - customparams = o(100, 125, "berserk"), + }), + raptor_miniq_c = tableMerge(miniQueenCommon, { + customparams = raptorSquad(100, 125, 'berserk'), weapondefs = { goo = { damage = { default = 3000 } }, melee = { damage = { default = 10000 } }, - yellow_missile = { damage = { default = 1, vtol = 1000 } } } - }, + }), raptor_consort = { - explodeas = "raptor_empdeath_big", + explodeas = 'raptor_empdeath_big', maxthisunit = 8, - customparams = o(85, 1000, "berserk"), + customparams = raptorSquad(85, 1000, 'berserk'), weapondefs = { eyelaser = { range = 800, @@ -155,32 +165,32 @@ for f, u in pairs { } }, melee = { - name = "Royal Beak Attack", + name = 'Royal Beak Attack', range = 300, - soundstart = "pensquawk1", + soundstart = 'pensquawk1', damage = { default = 1000 } } }, weapons = { [2] = { - def = "melee", - maindir = "0 0 1", + def = 'melee', + maindir = '0 0 1', maxangledif = 155 } } }, raptor_mama_ba = { maxthisunit = 4, - customparams = o(55, 84, "berserk"), + customparams = raptorSquad(55, 84, 'berserk'), weapondefs = { goo = { damage = { default = 750 } }, melee = { damage = { default = 750 } } } }, raptor_mama_fi = { - explodeas = "raptor_empdeath_big", + explodeas = 'raptor_empdeath_big', maxthisunit = 4, - customparams = o(55, 84, "berserk"), + customparams = raptorSquad(55, 84, 'berserk'), weapondefs = { flamethrowerspike = { damage = { default = 120 } }, flamethrowermain = { damage = { default = 240 } } @@ -188,24 +198,24 @@ for f, u in pairs { }, raptor_mama_el = { maxthisunit = 4, - customparams = o(60, 1000, "berserk") + customparams = raptorSquad(60, 1000, 'berserk') }, raptor_mama_ac = { maxthisunit = 4, - customparams = o(65, 1000, "berserk"), + customparams = raptorSquad(65, 1000, 'berserk'), weapondefs = { melee = { damage = { default = 750 } } } }, raptor_land_assault_basic_t4_v2 = { maxthisunit = 8, - customparams = o(33, 50, "raider") + customparams = raptorSquad(33, 50, 'raider') }, raptor_land_assault_basic_t4_v1 = { maxthisunit = 16, - customparams = o(51, 69, "raider", "basic", 2) + customparams = raptorSquad(51, 69, 'raider', 'basic', 2) } } do - a[f] = a[f] or {} - table.mergeInPlace(a[f], u, true) + unitDefs[f] = unitDefs[f] or {} + table.mergeInPlace(unitDefs[f], u, true) end